IE6/IE7支持的P3P導致iframe和跨站點cookie被阻止

之前的博客iframe和跨站點cookie引起的session失效問題中已經講到過此問題,其根源也是由於iframe跨站點cookie被阻導致session失效。但是當時因爲兩個站點都是自有的服務器,因此通過設置了相同的父域名解決了此問題,所以後來也就沒有深入研究此問題。
目前在開發新功能時,又一次遇到了此問題,但是如果仍舊通過更改域名的方式來解決的話,設計上可能就會非常麻煩。於是不得已徹底翻了一下資料,初步研究結果如下:
問題根源:
IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)協議默認阻止第三方無隱私安全聲明的cookie,Firefox目前還不支持P3P安全特性,firefox中自然也不存在此問題了。Mircosoft對此的具體描述可以參見 Privacy in Internet Explorer 6
解決方法:
很簡單,在要嵌入的內容中(iframe指向的站點)輸出P3P的主機頭聲明,步驟如下(Session variables are lost if you use FRAMESET in Internet Explorer 6):
1.打開IIS管理器 inetmgr
2.選擇被嵌入iframe源站點或者目錄,右鍵點擊打開屬性框
3.切換到HTTP頭
4.添加
5.自定義HTTP頭名: P3P
6.自定義HTTP頭值: CP="CAO PSA OUR"
7.關閉屬性框退出,即刻生效
至於上面CAO PSA OUR的具體意思,還是請參考前面的文章:Privacy in Internet Explorer
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章