Android程序员 2011-07-18
今天平台联调时,把我们的产品挂在其他平台的<iframe>框架时,发现登录不了,原来是不能写cookie,通过网上资料查询,找到了解决办法.
在IE安全限制往iframe框架内的网站写cookie目的:
1.iframe的限制
2.突破iframe写或获取本地cookie的思路
3.利用CrossIframeTrick突破iframe安全限制
<iframeid="frame1"style="left:0px;position:absolute;top:0px"name="frame"marginwidth="0"marginheight="0"src="http://xxx/xx/jaoEntrance.do?userId=xx&roleId=x"frameborder="0"width="250"scrolling="no"height="250"allowtransparency="allowtransparency">
这也算是一个长期困扰我的一个问题,就是A站iframe其它站(B站)的内容时,B站的页面获取不到B站种下的Cookies。
原因是引用
如果页面是来自框架的,而框架的父页和框架不是一个站点的话,客户端默认是禁止向页面附加头信息的,这样服务器端就无法识别客户端框架里面的页面,自然不能操作Session。
ie下iframe和跨域名写cookie的问题,以下方法测试成功!
在试验时,先只在读取Cookies时设置,不行。读取和输出都设置才可以。后来发现,只需要在输出时设置一下就可以了,读取时无需设置
考虑直接改IIS设置比较麻烦,直接在ASP头部加了头部申明,测试有效。
<%Response.AddHeader"P3P","CP=CAOPSAOUR"%>
1.php的话,我没去试,应该是如下写法:
header('P3P:CP=CAOPSAOUR');
2.ASP.NET的话,照抄网上的。
通过在代码上加Response.AddHeader("P3P","CP=CAOPSAOUR")或者在Window服务中将ASP.NETStateService启动。
3.JSP:
response.setHeader("P3P","CP=CAOPSAOUR")
服务器不支持Cookies的特殊原因.