iframe跨域與session失效問題的解決辦法

來源:互聯網
上載者:User

 這篇文章主要介紹了iframe跨域與session失效問題的解決辦法,有需要的朋友可以參考一下

何為跨域跨域session/cookie? 也就是第三方session/cookie。第一方session/cookie指的是訪客當前訪問的網站給訪客的瀏覽器設定的seesion /cookie, 會被儲存在訪客的電腦上。第三方session/cookie指的是當前訪問的網站中會載入(嵌入)另外第三方的網站代碼,例如促銷廣告,那麼第三方網 站也會在訪客的電腦上添加session/cookie,這種就是第三方session/cookie。 我的問題 在開發訊息線上產品(http://iap.pgia.net)測試各種瀏覽器的相容性時,發現IE瀏覽器(v78)都無法登入(總是提示驗證碼不匹配錯誤),而其它瀏覽器無此問題(firefox、百度等)。因此可以斷定這和瀏覽器脫不了干係。 初步分析: 細查發現,在使用IE瀏覽器(v78)訪問時,伺服器端日誌中顯示sessionId一直在變化,每次請求都會產生一個全新的sessionId. 顯然這是導致無法登入的直接唯一原因,如果解決這個問題則可正常登入。 深入分析: 為什麼在IE瀏覽器(v78)上會出現這種情況呢,百度瞭解後得知: 出於隱私安全的考慮,IE會丟失Iframe中的Cookie,IE6/IE7支援的P3P(Platform for Privacy Preferences Project (P3P) specification)協議預設阻止第三方無隱私安全聲明的cookie,Firefox、Chrome 不存在此問題。 我們知道Session 其實就是基於Cookie的。用戶端在第一次與伺服器建立會話時,會分配給用戶端一個隨機的sessionId,並存於用戶端cookie中,然後在之後的請求中,會帶上這個Cookie,如果在用戶端找不到這樣的Cookie,那麼伺服器就會重新分配一個。 而我的應用程式結構恰恰如此,即內建一個iframe嵌入遠程應用來實現的。 解決辦法: 要解決這個問題就是要在請求時添加“P3P”協議。那麼如何?呢? 在架構頁面加入如下代碼: 代碼如下:<%    // 解決IE78跨域訪問問題   response.setHeader("P3P","CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"");   %> 至此,問題已解決 
相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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