注意 IE iframe 中 Session 值的設置


問題描述

        最近出於興趣, 開發人人網的一款小應用, 應用頁面通過 iframe 嵌在人人網頁面中, 打開應用后需要用戶授權, 人人網將返回的授權數據通過GET方法請求我的后台代碼, 后台代碼分析其中比較重要的幾個參數存儲在Session中, 可是在IE中怎么試都跟沒設置Session似的, 而用Chrome則完全正常. 我用Fiddler調試了很久, 跟哥哥也討論了幾個方法, 但一開始我一直以為是URL中含有'-'符號所致, 使用各種Encode, 還嘗試着將Response.Redirect 改為Server.Transfer, 但都無效, 這個問題困擾我好幾天.

        通過網上大量的搜索發現原來IE的iframe有特殊之處, 默認情況下, IE如果發現iframe的域和父頁面的域不同, 則會禁止iframe頁面寫入Cookie(Session在默認情況下就是通過Cookie保存一個SessionID的). 如果將IE設置->隱私的級別調至最低, 也就是接受任何Cookie, 那么是運行正常的.

解決辦法

        在IIS的 HTTP Response Headers 中添加一行, 名字為: p3p, 值設置為: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"

參考

1. http://stackoverflow.com/questions/6368750/session-variables-not-saved-when-page-is-in-an-iframe

2. http://aspnetresources.com/blog/frames_webforms_and_rejected_cookies

3. http://support.microsoft.com/kb/283185/zh-cn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM