menu

秋梦无痕

一场秋雨无梦痕,春夜清风冻煞人。冬来冷水寒似铁,夏至京北蟑满城。

Avatar

IE里iframe中的页面读写cookie失败

在做网页应用的时候碰到一个问题:IE里iframe中的页面,在服务器端读写Cookie会失败。Firefox却没有这个问题。
上网搜了一下,原来是因为IE对frame/iframe里面的页面读写Cookie的时候有安全限制。

解决方案,回复P3P头:
ASP: <%Response.AddHeader "P3P", "CP=CAO PSA OUR"%>
PHP: header('P3P: CP=CAO PSA OUR');
ASP.NET: Response.AddHeader("P3P", "CP=CAO PSA OUR");
JSP: response.setHeader("P3P","CP=CAO PSA OUR")

读取跨域Cookie时的P3P头:
P3P: CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'

大概看了一下官方文档:http://www.w3.org/P3P,就是跟客户端声明一下我不会干坏事就行了。
compact-access = "CAO" ; for <contact-and-other/>
compact-purpose = "PSA" ; for <pseudo-analysis/>
compact-recipient = "OUR" ; for <ours/>

不过,有点奇怪的是为什么本页发header,本页就可以读取Cookie。