PHP-多域名單點登錄方案

1.只是二級域名不一樣(好比a.xx.com, b.xx.com)php

  利用cookie, 設置domain爲".xx.com"便可chrome

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)cookie

  在開發中,咱們碰到的跨域主要仍是糾結在IE,頁面中的IFRAME或者FRAME或者JS跨域的時候,IE有安全策略限制頁面不帶cookie,可是若是咱們加上P3P,就沒有這策略的限制。這也是P3P來突破跨域的可行前提。dom

  如下爲摘錄的例子:spa

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

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

 

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

 

<?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值。並非經過瀏覽器看js

  將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和chrome不發送P3P也能跨域成功,ie必須有P3P協議

相關文章
相關標籤/搜索