乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       franklinfj 2010-11-13

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

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

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


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

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

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

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

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

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

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

      只需要設(shè)置 P3P HTTP Header,在隱含 iframe 里面跨域設(shè)置 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的話,應(yīng)該是如下寫法:
      header('P3P: CP=CAO PSA OUR');

      ASP.NET的話
      通過在代碼上加Response.AddHeader("P3P", "CP=CAO PSA OUR")或者在Window服務(wù)中將ASP.NET State Service 啟動。

      JSP:
      response.setHeader("P3P","CP=CAO PSA OUR")

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

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

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


      前幾天因為一企業(yè)網(wǎng)站,內(nèi)有一客戶的服務(wù)系統(tǒng),那個網(wǎng)站因為是租用的空間,不足以存放客戶系統(tǒng),所以另外搞了個服務(wù)器,為了使域名的統(tǒng)一性(另一個服務(wù)器的域名與原域名差別過大),所以把這個客戶系統(tǒng)用框架包含在了原來的網(wǎng)站內(nèi),但碰到了因為跨域操作而使客戶系統(tǒng)用戶登陸后發(fā)生session丟失的問題,困撓了一整天,也在此發(fā)貼征求解決方法,見:http://bbs./dispbbs.asp?boardID=10&ID=167628&page=3。后經(jīng)本人多方查找資料,經(jīng)過本人分析和試驗,終于把這個問題給解決了,今天見有人問要程序,所以寫這個貼子,以供大家共享。
      首先說明原理:
      系統(tǒng)是認(rèn)一個一個程序范圍的,一般來說,一個IE默認(rèn)為一個程序范圍.
      框架因為有了跨域的內(nèi)容,所以它首先默認(rèn)的是框架程序本身的程序范圍,這樣使得框架內(nèi)的程序范圍得不到確認(rèn).
      為了讓這個IE默認(rèn)為框架內(nèi)的程序范圍,所以我使用了多次跳轉(zhuǎn).
      首先,跳出本框架,進(jìn)入一個無框架的需要session值的網(wǎng)站頁面(就叫它B服務(wù)器的頁面),并在這個頁面中生成一個session以便系統(tǒng)自動生成一個sessionID,然后又跳回到有框架的頁面.因為系統(tǒng)已經(jīng)為這個IE生成了一個sessionID,所以只要不關(guān)掉這個IE,系統(tǒng)一直以為這個IE是本程序范圍的.這樣,再次生成的session值就得以在這個ID中生存下來.
      也就達(dá)到了騙過系統(tǒng)的目的.
      再補(bǔ)充一點(diǎn),二次跳轉(zhuǎn)使用了不同的方式,原因是我需要把框架外的信息丟棄,而要保存框架內(nèi)的信息.
      而不同的跳轉(zhuǎn)方式會丟棄或保存跳轉(zhuǎn)前的信息的。
      程序?qū)崿F(xiàn)方式:
      文件1:
      框架文件:index.htm(運(yùn)行在服務(wù)器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 (運(yùn)行在服務(wù)器B上,作用跳轉(zhuǎn)和生成sessionID)
      <script>
      if (top.location !== self.location) {
      top.location=self.location;
      }
      //這個JS的目的是跳出框架運(yùn)行
      </script>
      <%
      if session("xm2")="" then
        session("xm2")="eee"
      '上面這一句的目的只是為了使用session,讓系統(tǒng)為這個IE生成一個sessionID,并且判斷一下是不是已經(jīng)跳轉(zhuǎn)過,免得引起死循環(huán)。
      %>
      <META HTTP-EQUIV=REFRESH CONTENT="0;URL='http://www.serverA.com/index.htm'">
      <%
      ,上面這一句是回到框架,注意:只能用上面這個跳轉(zhuǎn)的方法,別用下面的跳轉(zhuǎn)方法。
      else
      Response.Redirect "index2.asp"
      '上面一句才是真正地跳轉(zhuǎn)運(yùn)行服務(wù)器B上的程序!注意:也只能用這方法跳!
      end if%>

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

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多