[轉帖]iframe跨域訪問cookie/session問題

iframe跨域訪問cookie/session問題, A站iframe引用其它站(B站)的內容時,B站的頁面獲取不到B站種下的Cookies。
最終解決方案:
在登陸頁面,註冊頁面(凡是有寫入cookie/session)的地方都要:
Response.AddHeader("P3P", "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
 參考: 來自http://blog.csdn.net/lanmao100/archive/2008/04/25/2328491.aspx的 “用P3P header解決iframe跨域訪問cookie/session”
理論很簡單,而且模式也和大多請求返回狀態的SSO差不多.但是有幾個地方是要注意一下的.
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直接在頭部加了頭部申明,測試有效。
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")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章