IE在對iframe裏面的頁面寫Cookie的時候有一些安全限制,導致讀寫Cookie不成功,解決辦法:
1.頁面裏的COOKIE不能是瀏覽器進程的COOKIE(包括驗證票和不設置超時時間的COOKIE),否則跨域會取不到.這點做跨域COOKIE的人比較少提到.不過實際上留意下幾家大學做的方案,有細微的提到他們的驗證模塊裏的COOKIE是有設置超時時間的.
2.當利用IFRAME時,記得要在相應的動態頁的頁頭添加一下P3P的信息,否則IE會自覺的把IFRAME框裏的COOKIE給阻止掉,產生問題.本身不保存自然就取不到了.這個其實是FRAMESET和COOKIE的問題,用FRAME或者IFRAME都會遇到.
3.測試時輸出TRACE,會減少很多測試的工作量.
只需要設置 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")