• 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也能跨域成功)

  • 相关阅读:
    Get distinct count of rows in the DataSet
    单引号双引号的html转义符
    PETS Public English Test System
    Code 39 basics (39条形码原理)
    Index was outside the bounds of the array ,LocalReport.Render
    Thread was being aborted Errors
    Reportviewer Error: ASP.NET session has expired
    ReportDataSource 值不在预期的范围内
    .NET/FCL 2.0在Serialization方面的增强
    Perl像C一样强大,像awk、sed等脚本描述语言一样方便。
  • 原文地址:https://www.cnblogs.com/JohnABC/p/3340120.html
Copyright © 2020-2023  润新知