小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

跨域讀取Cookie和session之HttpWebRequest另類方法(網站API開發(fā))

 franklinfj 2013-11-23

跨域讀取Cookie和session之HttpWebRequest另類方法(網站API開發(fā))

分類: Web Service我的程序2597人閱讀評論(2)收藏舉報

在網上找了很多跨域讀取Cookie的方法,但都是A域主動設置B域的Cookie,而沒有B域去獲取A域Cookie的方法。

若要轉載,請注名出處http://blog.csdn.net/try530/archive/2009/01/06/3721525.aspx

所謂A域主動設置B域的Cookie

1:在B.com上新建一文件:SetCookie.aspx

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. HttpContext.Current.Response.AddHeader("p3p", "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
  4. HttpCookie cookie = new HttpCookie("userid", "44");
  5. cookie.Domain = ".";
  6. // cookie.Expires = DateTime.Now.AddSeconds((double)expires);
  7. HttpContext.Current.Response.AppendCookie(cookie);
  8. }

2:在A域新建一文件:Default.aspx,在前臺頁面調用B域的SetCookie.aspx頁面,來為B域設置相應的Cookie.

  1. <script src="http://www./SetCookie.aspx"></script>

3:在B域新建一文件:Default.aspx來顯示被A域設置的Cookie。

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. Response.Write(Request.Cookies["userid"] == null ? "" : Request.Cookies["userid"].Value.ToString());
  4. }

4:以此訪問www./default.aspx---->www./default.aspx

以上為A域主動設置B域的Cookie,適用于單點登錄,但必須在B域,C域或D域上新建setcookie.aspx文件來讓A域幫忙設置Cookie。

那B域C域或D域如何根據(jù)自身的需要去主動獲取A域的Cookie呢?請看以下方法,以下方法為此文重點。

1:在A域新建一文件:SetCookie.aspx,此文件用來設置A域自己的Cookie。

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. HttpCookie cookie = new HttpCookie("userid", "44");
  4. HttpContext.Current.Response.AppendCookie(cookie);
  5. }

2:A域的Cookie設置完了,那怎么讓其他域來讀取自己的Cookie呢,這就是重點了。
新建一頁面:OpenID.aspx,用來讓B域讀取Cookie,并自動設置B域的cookie。(這里有點昏)

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. HttpContext.Current.Response.AddHeader("p3p", "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
  4. if (Request.Cookies["userid"] != null)
  5. {
  6. Response.Write(@"
  7. var userid=" + Request.Cookies["userid"].Value.ToString() + @";
  8. SetCookie('userid',userid);//什么域調用此文件,設置的Cookie將是什么域的。
  9. window.location.href=document.URL;
  10. function SetCookie(name,value)//兩個參數(shù),一個是cookie的名子,一個是值
  11. {
  12. document.cookie = name + ""=""+ escape (value) ;
  13. }
  14. ");
  15. }
  16. else
  17. {
  18. Response.Write("document.write('沒有cookie');");
  19. }
  20. }


3:A域的工作已經完了,那B域如何得到A域的這個Cookie值呢,在B域新建一頁:default.aspx

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (HttpContext.Current.Request.Cookies["userid"] != null)
  4. {
  5. Label1.Text = HttpContext.Current.Request.Cookies["userid"].Value.ToString();
  6. }
  7. else
  8. {
  9. Response.Write(" <script src=/"http://www./openid.aspx/"></script>");
  10. }
  11. }

4:依次訪問 www./setcookie.aspx ------> www./default.aspx 此方法用于A域開發(fā)API給其他域調用。主要用于A域API接口的開發(fā)。就像現(xiàn)在的SNS網站提供當前登錄的用戶信息給其他應用程序(如搶車位)一樣,不過我不知道他們是怎么實現(xiàn)的,但我用此方法實現(xiàn)了。
總結下此方法的步驟:
1:A域設置cookie
2:B域用調用javascript腳本的方式讀取A域cookie,讀取后,并同步設置B域Cookie.

3:調用B域時,發(fā)現(xiàn)沒有cookie就自動從A域獲取cookie值來設置自己的Cookie。
A域可以把怎么讀取的方法做成dll,提供給其他域。這稱之為A域的API。

測試成功,用此方法能跨域讀取session,方式是:把A域的Session值存入B域的cookie中。至于怎么存,存在什么cookie名稱里,由A域提供。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多