免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
[網(wǎng)摘]跨域session相關問題資料收集 - 日志 - sandy1890 - webg...

[網(wǎng)摘]跨域session相關問題資料收集

已有 683 次閱讀  2009-07-19 09:54   標簽網(wǎng)摘  session  資料  收集 
以下的方法都還沒有驗證過,參考資料收集中。
 
****************************************************************
 
問題描述:
   在一個應用(domain: A)的某個page中, 通過IFrame的方式嵌入另一個應用(domain: B)的某個頁面. 當兩個應用的domain
不一樣時, 在被嵌入的頁面中不允許使用cookie(即使用cookie實現(xiàn)的session會失效).

問題分析:
   在XP SP2和IE6之后,從安全性角度考慮,默認狀態(tài)下不允許在iframe里使用跨站點cookie。


解決方案:
   1. 修改Client的設置
    使Client可以接受來自任何網(wǎng)站的Cookie(具體設置在IE選項的隱私頁中)(測試通過).
   或者將兩個domain都設置為受信息站點(測試通過).

   2. 應用的domain修改
    簡單方案: 兩個應用使用同一個domain(沒有測試).
   復雜方案: 可以在iframe加載的頁面里通過setdomain來強制更改(沒有測試).

   3. P3P
   第一種: 在要嵌入的內(nèi)容中(iframe指向的站點)輸出P3P的主機頭聲明,步驟如下:
> 打開IIS管理器 inetmgr
> 選擇被嵌入iframe源站點或者目錄,右鍵點擊打開屬性框
> 切換到HTTP頭
> 添加
> 自定義HTTP頭名: P3P
> 自定義HTTP頭值: CP="CAO PSA OUR"
> 關閉屬性框退出,即刻生效

   第二種: 在被嵌入頁面page_onload里添加一語句:Response.AddHeader("P3P","CP=CAO PSA OUR")(測試通過);
****************************************

1.頁面里的COOKIE不能是瀏覽器進程的COOKIE(包括驗證票和不設置超時時間的COOKIE),否則跨域會取不到.這點做跨域COOKIE的人比較少提到.不過實際上留意下幾家大學做的方案,有細微的提到他們的驗證模塊里的COOKIE是有設置超時時間的.

2.當利用IFRAME時,記得要在相應的動態(tài)頁的頁頭添加一下P3P的信息,否則IE會自覺的把IFRAME框里的COOKIE給阻止掉,產(chǎn)生問題.本身不保存自然就取不到了.這個其實是FRAMESET和COOKIE的問題,用FRAME或者IFRAME都會遇到.

3.測試時輸出TRACE,會減少很多測試的工作量.

只需要設置 P3P HTTP Header,在隱含 iframe 里面跨域設置 cookie 就可以成功。他們所用的內(nèi)容是:

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")

**************************************************************

原帖及討論:http://bbs.bc-cn.net/dispbbs.asp?boardID=10&ID=168248

*/ --------------------------------------------------------------------------------------
*/ 出自: 編程中國  http://www.bc-cn.net
*/ 作者: 不惑        QQ:7284911
*/ 時間: 2007-9-6  編程論壇首發(fā)
*/ 聲明: 尊重作者勞動,轉載請保留本段文字
*/ --------------------------------------------------------------------------------------


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

<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title>奇豪門業(yè)</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>此網(wǎng)頁使用了框架,但您的瀏覽器不支持框架。</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,讓系統(tǒng)為這個IE生成一個sessionID,并且判斷一下是不是已經(jīng)跳轉過,免得引起死循環(huán)。
%>
<META HTTP-EQUIV=REFRESH CONTENT="0;URL='http://www.serverA.com/index.htm'">
<%
,上面這一句是回到框架,注意:只能用上面這個跳轉的方法,別用下面的跳轉方法。
else
Response.Redirect "index2.asp"
'上面一句才是真正地跳轉運行服務器B上的程序!注意:也只能用這方法跳!
end if%>

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

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何使用COOKIE欺騙
解決 Iframe跨域session 丟失問題
ASP.NET性能優(yōu)化之分布式Session
使用C#實現(xiàn)網(wǎng)站用戶登錄
url中的jsessionid解釋 - 梧桐的日志 - 網(wǎng)易博客
《ASP動態(tài)網(wǎng)頁設計與應用(第2版)》第5章 Session、Application和Server對象
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服