IE裡Iframe的Cookie問題解決辦法總結

來源:互聯網
上載者:User

最近在做一個項目需要用到IFRAME,發現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")

 

 

或者

 

 

 

IframeCookie 傳遞不丟失的問題解決
[ 2007-7-19 10:51:00 | By: 飛揚人生 ]
 

如果 iframe 另一個頁面,登入容易丟失,如部落格裡採用了次層網域,那麼使用者在次層網域中不能登入。如果兩套系統整合,登入時也容易這樣,這是IE的安全限制。這裡有一個簡單方法解決。問題描述:我們這邊有兩個系統,一個OA系統,基於LOTUS的,現在我們用asp.net做了幾個應用模組,需要整合到OA系統中,需要實現一個後來隱藏登入,利用iframe 實現,但是發現,iframe 引用的頁面,直接通過瀏覽器是可以訪問的,但是通過ifame就不可以了。難道是iframe 的問題。於是,我google了一下:“iframe cookie ”,竟然有很多人討論!不久就基本上確認了我當時推測。IE6.0對W3C 關於cookie 的 P3P協議的支援,支援得有些荒唐,幾乎成了bug。有人說,可以設定一下IE的cookie 隱私,就好了,不用對程式做任何改動。但是,總不能要求所有使用者這麼做吧。 再找,呵呵,問題終於解決了
問題原因:
在frameset裡面,也就是裡面的frame是來自第三方網站(不同IP或不同網域名稱),那麼預設情況下IE會自動禁用這些網站的cookie ,也就是在請求某url時在HTTP header裡不發送它們的cookie ,包括session的cookie 。注意,這些網站在response裡面設定的cookie 還是會被發送到瀏覽器的。解決方案:對frame裡面的引用網站的response header裡面添加一個確認資訊,在MSDN裡面有個最簡單的

解決辦法:response.addHeader("P3P","CP=CAO PSA OUR")。所有我們可以通過增加一個網站http頭來解決問題;管理工具——〉選擇一個網站——〉屬性——〉http頭,增加一個http頭然後輸入頭名:P3P 輸入頭內容:CP=CAO PSA OUR注意:可以只選擇某一個目錄! 好了,ok了

最後,給出一個msdn的參考:http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q323752

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.