1. 程式人生 > >系統間使用iframe引用時,session丟失的問題

系統間使用iframe引用時,session丟失的問題

偶然發現IE在對iframe裡面的頁面寫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 session加入頁面中,在頁頭加入:
response.addHeader(“P3P”, “CP=CAO PSA OUR”);
或者在filter中:
response.setHeader(“P3P”,”CP=CAO PSA OUR”);

問題:我的系統A要引用系統B的功能,兩個系統的域是不一樣的。這時,嵌入頁面不能使用cookie,所以使用cookie儲存的session也不能用了。導致B系統在做session操作時,返回的資訊都是空的。

在網上查到如下解決方法:

如果你使用了多個不同伺服器整合,很有可能出現這種問題,比如:apache和weblogic 整合,一個是html伺服器,一個是 jsp伺服器,根據不同的訪問路徑轉到不同的伺服器,這其中我們難免會遇到混合狀態,所以,iframe使用在所難免。

問題描述:
在一個應用(domain: A)的某個page中, 通過IFrame的方式嵌入另一個應用(domain: B)的某個頁面. 當兩個應用的domain不一樣時, 在被嵌入的頁面中不允許使用cookie(即使用cookie實現的session會失效).

問題根源:

IE6/IE7支援的P3P(Platform for Privacy Preferences Project (P3P) specification)協議預設阻止第三方無隱私安全宣告的cookie,Firefox目前還不支援P3P安全特性,firefox中自然也不存在此問題了。Mircosoft對此的具體描述可以參見 Privacy in Internet Explorer 6

解決方法:

很簡單,在要嵌入的內容中(iframe指向的站點)輸出P3P的主機頭宣告,步驟如下(Session variables are lost if you use FRAMESET in Internet Explorer 6):

1.開啟IIS管理器 inetmgr
2.選擇被嵌入iframe源站點或者目錄,右鍵點選開啟屬性框
3.切換到HTTP頭
4.新增
5.自定義HTTP頭名: P3P
6.自定義HTTP頭值: CP=”CAO PSA OUR”
7.關閉屬性框退出,即刻生效
至於上面CAO PSA OUR的具體意思,還是請參考前面的文章:Privacy in Internet Explorer 6


相關推薦

系統使用iframe用時session丟失的問題

偶然發現IE在對iframe裡面的頁面寫Cookie的時候有一些安全限制,導致讀取Cookie不成功,找了好長時間的解決辦法,重要找到如下的辦法: 2.當利用IFRAME時,記得要在相應的動態頁的頁頭新增一下P3P的資訊,否則IE會自覺的把IFRAME框裡的COOKIE給

如果在一個標簽上兩類並用css樣式表中用時兩個類必須寫在一起不能有空格。

nbsp clas div 樣式表 ext style borde 引用 order 例: <html>   <style type="text/css">     .mui-table-view-cell.mui-collapse{      bo

Elasticsearch java api用時啟動報錯

肯定是引用包的問題, 我的Elasticsearch用的6.3.2, 我用的一下依賴,試了很久才正常啟動。 <dependency>             <groupId>io.netty</groupId>            

Elasticsearch java api用時啟動報錯

肯定是引用包的問題, 我的Elasticsearch用的6.3.2, 我用的一下依賴,試了很久才正常啟動。 <dependency>             <groupId>io.netty

plupload 在和 vue.js 多頁面用時報錯Cannot read property 'style' of null

在一個頁面中引用了plupload.full.min.js 和 vue.js,在使用時報如下錯誤 百度發現報這個錯的基本上是dom結構與渲染樣式的載入順序造成的,而vue.js的頁面渲染不知道是哪裡和plupload有衝突,於是就先初始化plupload,再去new V

解決了uploadify上傳檔案時某些瀏覽器(版本)中session丟失導致上傳失敗的問題

一、問題近期,在做檔案上傳時,使用了uploadify這個基於flash的檔案上傳元件,版本號為3.2.1。在IE下,一切正常,但是當切換到某些低版本chrome瀏覽器後,發生了檔案不能上傳的問題。通過除錯和問題定位,發現是session丟失,導致服務端不能識別登入狀態,所以

關於axios請求跨域session丟失的問題

    最近做vue+node的demo中,遇到了關於在後端設定跨域訪問後session儲存不了值的問題,第一次儲存登入資訊req.session.login = user,當登入成功後去取出session中的值,發現req.session.login = undefined

js window.location.href之後session丟失的問題

今天一個小夥伴問我問題,就是java後臺把資料放入session,jsp裡js重定向頁面之後就取不到session裡面的資料了,而且他本地可以,伺服器上卻取不到session下面是他寫的重定向程式碼:大概意思就是:window.location.href 之後,重新建立了一個

使用ifame嵌入其他系統導致session丟失的解決方法

檢查一下同一個域名下的weblogic應用的sessionid名稱配置,不要設定成預設的jsessionid,會產生session的丟失的情況。sessionid命令格式:jsessionid_xxx(應用標識)。

如何實現windows系統與虛擬機器中linux系統的通訊使linux系統能夠上網兩個系統可以進行檔案互傳。

       我使用的虛擬機器軟體為virtual box,系統為redhat 6.6,本機系統為win10旗艦版。當然,其他環境具體操作起來或許會有細微差別,但大體方向相同。        一、使虛擬機器系統能夠上

記一次與Shiro有關的錯誤404導致session丟失需要重新登入

一 問題描述 前段時間上司突然叫我幫忙解決老專案上的一個bug,出現的問題是不同使用者賬號,進入同一個頁面,有個別用戶重新整理一下當前頁面就會重定向到登入頁面,需要重新登入。 這是一個幾年前的一個專案,使用的是Srping + Spring MVC + Shiro + Jsp的專案,之前沒用過Shiro,

iframe 跨域訪問session/cookie丟失問題解決方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Asp.net MVC訪問母版頁中巢狀的iframe頁面時如果session或cookie過期登入驗證超時怎樣自動跳轉到登入頁

一般登入驗證的過濾器中,使用驗證過濾器的Redirect方法,將請求重定向到指定的URL。但是如果我們要訪問的頁面是一個巢狀在母版頁中的iframe頁面時,這種重定向只會對iframe頁面湊效,也就是會將iframe也重定向到登入頁,這樣就有違我們的目的了。所以我就嘗試了很多方法來實現讓整個頁面重定向到登入頁

【不用敲命令】如何正常啟動雙系統(windows win7 linux ubuntu )避免任一系統啟動項丟失或啟動卡殼、卡頓!

本說明針對正常安裝雙系統後,避免啟動任一系統困難。 【以Win7下安裝Ubuntu為例】  當在win7系統上安裝好Ubuntu系統後,進入系統時,發現可以看到win7的啟動條目,但選擇以後,有時候選擇了能進,多用幾次後就發現不行了,因此很惱火。   操作步驟:  

ASP.NET: Cookie會話丟失Session超時配置

問題描述:asp.net應用中web.config的SessionState節點:原先是<sessionState mode="InProc" timeout="120"/>出現時間未到會話就丟失的情況原因是該配置將Session儲存在IIS程序中,不穩定,導致Session丟失解決方法:將引數m

安裝完xampp啟用時計算機中丟失api-ms-win-crt-conio-l1-1-0.dll怎麼辦?

api-ms-win-crt-conio-l1-1-0.dll 第一步:我們需要下載缺失的這個檔案 api-ms-win-crt-conio-l1-1-0.dll 第二步:直接拷貝該檔案到系統目錄裡 1、Windows 95/98/Me系統,將dll複製到C:

一個伺服器搭多個tomcat導致session丟失或者同一個IP不同埠多個應用的session會衝突解決方法

 一個伺服器上搭建了多個tomcat或者weblogic,埠不一樣,同時啟動訪問時session丟失。如:A,B兩個服務,在瀏覽器中登入訪問A後,當前開啟的瀏覽器上在開一個選項卡訪問B服務後,回過來點選訪問A時session丟失,需要重新登入A才可以訪問。經過資料查詢,發

基於訊息實現系統的通訊(BIONIOAIO)學習。

當系統之間要通訊時,就向外傳送訊息,訊息可以是位元組流,位元組陣列,甚至是java物件,其他系統接受訊息後,則進行相應的業務處理。 訊息方式的系統間通訊,通常基於網路協議來實現,常用的實現系統間的通訊協議有:TCP/IP 和UDP/IP。 TCP/IP是一種可靠的網路資料

兩個系統部署在一個伺服器造成session衝突!

最近做的專案整合,一個專案訪問另一個專案的action傳使用者id引數,攔截器判斷該 id是否登入,未登入執行登入動作,設定進session中,實現一個假的單點登入!訪問成功後,回訪原專案其他的頁面則該session丟失或者說被與另外一個專案的session衝突了!開啟瀏覽

Linux系統故障修復-MBR損壞grub.conf配置檔案丟失

MBR損壞 1、藉助其他主機修復(需要拆硬碟) 2、使用緊急救援模式(常用,需要掛載完整的安裝光碟) 模擬故障 一、 破壞MBR(446BootLoader),bs不要超過446,超過446就會破壞分割槽表,導致檔案系統崩潰 [[email protected] ~]# dd i