国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

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

2024-05-04 11:07:30
字體:
來源:轉載
供稿:網友
前幾天因為一企業網站,內有一客戶的服務系統,那個網站因為是租用的空間,不足以存放客戶系統,所以另外搞了個服務器,為了使域名的統一性(另一個服務器的域名與原域名差別過大),所以把這個客戶系統用框架包含在了原來的網站內,但碰到了因為跨域操作而使客戶系統用戶登陸后發生session丟失的問題,困撓了一整天,也在此發貼征求解決方法,見:http://bbs.bc-cn.net/dispbbs.asp?boardID=10&ID=167628&page=3。后經本人多方查找資料,經過本人分析和試驗,終于把這個問題給解決了,今天見有人問要程序,所以寫這個貼子,以供大家共享。
首先說明原理:
系統是認一個一個程序范圍的,一般來說,一個IE默認為一個程序范圍.
框架因為有了跨域的內容,所以它首先默認的是框架程序本身的程序范圍,這樣使得框架內的程序范圍得不到確認.
為了讓這個IE默認為框架內的程序范圍,所以我使用了多次跳轉.
首先,跳出本框架,進入一個無框架的需要session值的網站頁面(就叫它B服務器的頁面),并在這個頁面中生成一個session以便系統自動生成一個sessionID,然后又跳回到有框架的頁面.因為系統已經為這個IE生成了一個sessionID,所以只要不關掉這個IE,系統一直以為這個IE是本程序范圍的.這樣,再次生成的session值就得以在這個ID中生存下來.
也就達到了騙過系統的目的.
再補充一點,二次跳轉使用了不同的方式,原因是我需要把框架外的信息丟棄,而要保存框架內的信息.
而不同的跳轉方式會丟棄或保存跳轉前的信息的。
程序實現方式:
文件1:
框架文件:index.htm(運行在服務器A上)
<html>

<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title>奇豪門業</title>
</head>
<frameset rows="1,*" border=0 frameborder="0">
  <frame name="winBackLoad" scrolling="no" noresize target="mainweb1" src="default_top.htm">
  <frame name="mainweb1" src="http://www.serverB.com/index.asp" scrolling="auto">
  <noframes>
  <body>

  <p>此網頁使用了框架,但您的瀏覽器不支持框架。</p>

  </body>
  </noframes>
</frameset>

</html>


文件2:index.asp (運行在服務器B上,作用跳轉和生成sessionID)
<script>
if (top.location !== self.location) {
top.location=self.location;
}
//這個JS的目的是跳出框架運行
</script>
<%
if session("xm2")="" then
  session("xm2")="eee"
'上面這一句的目的只是為了使用session,讓系統為這個IE生成一個sessionID,并且判斷一下是不是已經跳轉過,免得引起死循環。
%>
<META HTTP-EQUIV=REFRESH CONTENT="0;URL='http://www.serverA.com/index.htm'">
<%
,上面這一句是回到框架,注意:只能用上面這個跳轉的方法,別用下面的跳轉方法。
else
Response.Redirect "index2.asp"
'上面一句才是真正地跳轉運行服務器B上的程序!注意:也只能用這方法跳!
end if%>

經過以上的跳轉,本IE已經有了服務器B上的sessionID,也就是說,框架雖然是在服務器A上的主框架運行,但它可以確保服務器B上的session不丟失,達到跨域運行的目的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜梁县| 海城市| 海南省| 陈巴尔虎旗| 太仓市| 绿春县| 新余市| 灵川县| 麦盖提县| 厦门市| 左贡县| 大方县| 罗田县| 涞水县| 凤冈县| 马山县| 台湾省| 蕲春县| 伊宁市| 璧山县| 莫力| 七台河市| 冀州市| 柘城县| 蒲城县| 武清区| 托克托县| 沽源县| 洱源县| 福贡县| 黄梅县| 通化县| 新民市| 秦安县| 喜德县| 遂昌县| 梁河县| 沙坪坝区| 北海市| 西昌市| 福海县|