本次專案需求是需要在A網的html頁面中夾一個iframe
目標是B網的ASP.NET頁面
以往因為都是在本機上做iframe夾頁所以都沒遇過相關問題
所以預先處理的項目是將.NET最常處理的crossdomain.xml做上去
沒想到卻還是發生了使用IE瀏覽時
.NET頁面在按button的時候無法動作
其他瀏覽器則可以正常運行
而頁面是用updatepanel包的
嘗試了幾小時在crossdomain方面尋找問題卻沒辦法處理
最後找到的關鍵在IE會因為跨網域iframe夾頁時無法使用cookies
這是IE的安全性限制導致的問題
根據這篇文章 IE里Cookie跨域不能读取 得知
只需要在HTTP標頭加上 P3P HTTP Header 就可以了
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")
ASP.NET State Service的部分,我並沒有做過測試
基本上加上response.addHeader就已經可行
留言列表