使用框架跨域執行不丟失session的方法

2022-06-25 15:18:02 字數 1166 閱讀 9055

前幾天因為一企業**,內有一客戶的服務系統,那個**因為是租用的空間,不足以存放客戶系統,所以另外搞了個伺服器,為了使網域名稱的統一性(另乙個伺服器的網域名稱與原網域名稱差別過大),所以把這個客戶系統用框架包含在了原來的**內,但碰到了因為跨域操作而使客戶系統使用者登陸後發生session丟失的問題,困撓了一整天,也在此發貼徵求解決方法,見:後經本人多方查詢資料,經過本人分析和試驗,終於把這個問題給解決了,今天見有人問要程式,所以寫這個貼子,以供大家共享。

首先說明原理:

系統是認乙個乙個程式範圍的,一般來說,乙個ie預設為乙個程式範圍.

框架因為有了跨域的內容,所以它首先預設的是框架程式本身的程式範圍,這樣使得框架內的程式範圍得不到確認.

為了讓這個ie預設為框架內的程式範圍,所以我使用了多次跳轉.

首先,跳出本框架,進入乙個無框架的需要session值的**頁面(就叫它b伺服器的頁面),並在這個頁面中生成乙個session以便系統自動生成乙個sessionid,然後又跳回到有框架的頁面.因為系統已經為這個ie生成了乙個sessionid,所以只要不關掉這個ie,系統一直以為這個ie是本程式範圍的.這樣,再次生成的session值就得以在這個id中生存下來.

也就達到了騙過系統的目的.

再補充一點,二次跳轉使用了不同的方式,原因是我需要把框架外的資訊丟棄,而要儲存框架內的資訊.

而不同的跳轉方式會丟棄或儲存跳轉前的資訊的。

程式實現方式:

檔案1:

框架檔案:執行在伺服器a上)

此網頁使用了框架,但您的瀏覽器不支援框架。

檔案 (執行在伺服器b上,作用跳轉和生成sessionid)

<%if session("xm2")="" then

session("xm2")="eee"

'上面這一句的目的只是為了使用session,讓系統為這個ie生成乙個sessionid,並且判斷一下是不是已經跳轉過,免得引起死迴圈。

%><%,上面這一句是回到框架,注意:只能用上面這個跳轉的方法,別用下面的跳轉方法。

else

""'上面一句才是真正地跳轉執行伺服器b上的程式!注意:也只能用這方法跳!

end if%>

經過以上的跳轉,本ie已經有了伺服器b上的sessionid,也就是說,框架雖然是在伺服器a上的主框架執行,但它可以確保伺服器b上的session不丟失,達到跨域執行的目的。

青島**醫院|

魔域職業使用介紹

一 吸血聖戰 血族 他們被喻為夜幕中的漫步者,被時光遺忘的避世貴族,在他們一生漫長的歲月裡,狂熱的追求著其它種族的精血,以不斷淨化出更純正的血脈,他們就是 血族!現在請跟隨我們,一步一步揭開血族的神秘面紗。血魂和血祭系統 顧名思義,血魂作為血族職業最重要的一部分,和人物永久繫結,不可分割,可以說,血...

域使用全攻略

按下 ctrl f9 組合鍵,插入域記號。在域記號中輸入相應的域 如 date eeee年o月a日 mergeformat 輸入完成後,選中全部域 右擊滑鼠,在隨後彈出的快捷選單中,選 更新域 選項,域結果就呈現在我們的面前了。三 域的修改 如果對插入或輸入的域 不滿意,可以重新插入或輸入,也可以直...

EQ域使用全攻略

eq域共有10個域控制開關,配合使用可以輸入一些複雜的公式和字元排列效果。eq域攻略之一 陣列排列控制開關 a 開關功能 按照行的順序,將給定的陣列元素 元素最多為39個 排列為多列,組成乙個類似矩陣的形式。開關選項 使用下列控制開關選項,可以對 a開關作進一步控制 al 列內元素左對齊。ar 列內...