IE block my cookie in iframe IE裏Iframe的Cookie問題解決辦法總結(轉)

---恢復內容開始---php

There is a severe bug that a leader figured it out in a published project.html

In IE11, the page refreshs again and again, no contents are displayed.跨域

I followed this problem and recorded it below:安全

Because of the IE security privacy policy, the cookie in the 3-party can't be allowed in IE. So my cookie is blocked and can't be set successfully.cookie

I have found a wonderful blog that explanes the phenomeno and give the p3p privacy policy solution。dom

如下部份內容翻譯自EricLaw [ex-MSFT]的《A Quick Look at P3P》

https://blogs.msdn.microsoft.com/ieinternals/2013/09/17/a-quick-look-at-p3p/ide

因爲考慮有些網站經過iframe嵌套可能會跟蹤你訪問的站點,IE在對第三方cookie域會有網頁隱私策略,因此限制和阻擋了cookie。post

第三方cookie的定義:頁面中經過不一樣的方式接收了不一樣域的url。不一樣方式例如:<script>, <img>, <link>, <frame>, <iframe>, <audio>, <video>以及包括設置了withCredentials標識的cross-domain XmlHttpRequest跨域請求。測試

在個人項目中涉及到子frame,示例:網站

IE9以前若是cookie被block了,會出現紅眼睛進行提示,IE9(包括IE9)以後就不會出現紅眼睛提示,而且console控制檯也不報任何錯誤,能夠經過 setting=》安全=》網頁隱私策略進行查看:

 

 解決方案:

1.避免使用cookie存儲

2.若是你避免不了,在3-party中HTTP的response header中設置P3P

如何設置?轉載自宏宇轉過來的文章(原諒我沒找到原文的出處=.=)-- IE裏Iframe的Cookie問題解決辦法總結(轉)

該文章有多重解決方案,我這裏提取幾種後臺設置方案:

只須要設置 P3P HTTP Header,在隱含 iframe 裏面跨域設置 cookie 就能夠成功。他們所用的內容是:

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

ASP直接在頭部加了頭部申明,測試有效。
<%Response.AddHeader "P3P", "CP=CAO PSA OUR"%>

php的話,應該是以下寫法:
header('P3P: CP=CAO PSA OUR');

ASP.NET的話
經過在代碼上加Response.AddHeader("P3P", "CP=CAO PSA OUR")或者在Window服務中將ASP.NET State Service 啓動。

JSP:
response.setHeader("P3P","CP=CAO PSA OUR")

 

關於P3P的瞭解,請查看官網https://www.w3.org/P3P/

相關文章
相關標籤/搜索