zoukankan      html  css  js  c++  java
  • PHP-多域名单点登陆方案

    1.只是二级域名不同(比如a.xx.com, b.xx.com)

      利用cookie, 设置domain为".xx.com"即可

    2.多个本域名都不相同(比如www.a.com, www.b.com)

      1).可以在www.a.com的登录界面利用隐藏iframe + form表单 + js向www.b.com发出请求, b响应设置cookie

      2).可以www.a.com的登录界面进行跳转, 跳转到www.b.com的登录界面, 每次都进行cookie设置(头部: set-cookie; location;)

    3.P3P协议跨域(跨域设置cookie)

      在开发中,我们碰到的跨域主要还是纠结在IE,页面中的IFRAME或者FRAME或者JS跨域的时候,IE有安全策略限制页面不带cookie,但是如果我们加上P3P,就没有这策略的限制。这也是P3P来突破跨域的可行前提。

      以下为摘录的例子:

        http://www.a.com/a_setcookie.php 文件内容

    1 <?php
    2     setcookie("test", $_GET['id'], time()+3600, "/", ".a.com");

        http://www.a.com/a_getcookie.php 文件内容

    <?php
        var_dump($_COOKIE);

        http://www.b.com/b_setcookie.php 文件内容

    1 <script src="http://www.a.com/a_setcookie.php?id=www.b.com"></script>

      通过浏览器访问

        1.http://www.b.com/b_setcookie.php

        2.http://www.a.com/a_getcookie.php

        访问1后,我们并没有在2上发现设置上cookie值。

      将http://www.a.com/a_setcookie.php文件内容改为如下

    1 <?php  
    2     header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');   
    3     setcookie("test", $_GET['id'], time()+3600, "/", ".a.com");

      再次访问:
        1.http://www.b.com/b_setcookie.php
        2.http://www.a.com/a_getcookie.php
        在访问b.com域后,设置了a.com域的cookie值。

      上面例子可以看出通过发送P3P头信息而实现的跨域。(在Firefox不发送P3P也能跨域成功)

  • 相关阅读:
    广域网(ppp协议、HDLC协议)
    0120. Triangle (M)
    0589. N-ary Tree Preorder Traversal (E)
    0377. Combination Sum IV (M)
    1074. Number of Submatrices That Sum to Target (H)
    1209. Remove All Adjacent Duplicates in String II (M)
    0509. Fibonacci Number (E)
    0086. Partition List (M)
    0667. Beautiful Arrangement II (M)
    1302. Deepest Leaves Sum (M)
  • 原文地址:https://www.cnblogs.com/JohnABC/p/3340120.html
Copyright © 2011-2022 走看看