天天看點

P3P實作iframe中跨域傳遞COOKIEIE6/IE7支援的P3P(Platform for Privacy Preferences Project (P3P) specification)協定預設阻止第三方無隐私安全聲明的cookie,Firefox目前還不支援P3P安全特性,firefox中自然也不存在此問題了。

IE6/IE7支援的P3P(Platform for Privacy Preferences Project (P3P) specification)協定預設阻止第三方無隐私安全聲明的cookie,Firefox目前還不支援P3P安全特性,firefox中自然也不存在此問題了。

在frameset裡面,也就是裡面的frame是來自第三方站點(不同IP或不同域名),那麼預設情況下IE會自動禁用這些站點的cookie,也就是在請求某url時在HTTP header裡不發送它們的cookie,包括session的cookie。注意,這些站點在response裡面設定的cookie還是會被發送到浏覽器的。

在使用者浏覽a.php時 A.com寫入的為第一方Cookie,其嵌入的iframe指向b.php.這時B.com寫入的就為第三方Cookie了,是以它是被IE當在了大門外。 是以,每次當使用者送出的cookie送出時,就挂掉了.因為傳不到真實的伺服器.

解決方案.

PHP的程式

可以直接在B網站中寫入

<?php

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"')

?>

這樣就能接受第三方的Cookie啦。

lighttpd的伺服器

server.modules    = ("mod_setenv")

setenv.add-response-header = ( "P3P" => "CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'")

apache的伺服器

<VirtualHost>

Header set P3P 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'

</VirtualHost>

IIS的伺服器

增加一個網站http頭來解決問題;

管理工具——〉選擇一個網站——〉屬性——〉http頭,增加一個http頭

然後輸入頭名:P3P

輸入頭内容:CP=CAO PSA OUR

from:http://www.kobsky.cn/category/Html-JavaScript.aspx

繼續閱讀