国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.Net WebAPI與Ajax進行跨域數據交互時Cookies數據的傳遞

ASP.Net WebAPI與Ajax進行跨域數據交互時Cookies數據的傳遞

2020-05-05 15:42myface ASP.NET教程

本文主要介紹了ASP.Net WebAPI與Ajax進行跨域數據交互時Cookies數據傳遞的相關知識。具有很好的參考價值。下面跟著小編一起來看下吧

前言

最近公司項目進行架構調整,由原來的三層架構改進升級到微服務架構(準確的說是服務化,還沒完全做到微的程度,顆粒度沒那么細),遵循RESTFull規范,使前后端完全分離,實現大前端思想。由于是初次嘗試,中途也遇到了不少問題。今天就來討論一下其中之一的問題,WebAPI與前端Ajax 進行跨域數據交互時,由于都在不同的二級域名下(一級域名相同),導致Cookies數據無法獲取。

最開始通過頭部(Header)將Cookies傳輸到其WebAPI,也能解決問題。

下面講述另外一種解決方案。

解決過程:

步驟一:將Cookies的Domain(域)設置成一級域名,例如:“.wbl.com”(a.wbl.com域名下)

這是前提,此時在其中一個WebAPI中設置了Cookies后,用瀏覽器直接訪問其它的WebAPI是可以獲取到Cookies的。例如:a.wbl.com域名下設置的Cookies,用瀏覽器直接訪問b.wbl.com域名的WebAPI是可以獲取到Cookies的。但是用c.web.com域名下的Ajax訪問b.wbl.com時,就無法獲取到Cookies了,這是由于瀏覽器中Ajax的權限相對較低,Ajax無法跨域問題導致。

寫入Cookies代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/// <summary>
  /// 給指定的 Cookies 賦值
  /// </summary>
  /// <param name="cookKey">Cookies 名稱</param>
  /// <param name="value">Cookies 值</param>
  /// <param name="domain">設置與此 Cookies 關聯的域(如:“.tpy100.com”)(可以使該域名下的二級域名訪問)</param>
  public static void SetCookiesValue(string cookKey, string value, string domain)
  {
   HttpCookie cookie = new HttpCookie(cookKey);
   cookie.Value = value;
   cookie.HttpOnly = true;
   if (!string.IsNullOrEmpty(domain) && domain.Length > 0)
    cookie.Domain = domain;
   HttpContext.Current.Response.Cookies.Add(cookie);
  }

步驟二:JQuery中Ajax使用Jsonp數據類型解決跨域問題(c.wbl.com域名下)

前后端需要定義統一的回調(Callback)函數名。

前端Ajax代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 設置Cookies
  function set() {
   var url = "http://a.wbl.com/api/setvalue/888888";
   $.ajax({
    type: "get",
    url: url,
    dataType: "jsonp",
    jsonp: "callbackparam", //服務端用于接收callback調用的function名的參數
    jsonpCallback: "success_jsonpCallback", //callback的function名稱
    success: function (json) {
     console.log(json);
     alert(json);
    },
    error: function () {
     alert('fail');
    }
   });
  }
  // 獲取Cookies
  function get() {
   var url = "http://b.wbl.com/api/getvalue";
   $.ajax({
    type: "get",
    url: url,
    dataType: "jsonp",
    jsonp: "callbackparam", //服務端用于接收callback調用的function名的參數
    jsonpCallback: "success_jsonpCallback", //callback的function名稱
    success: function (json) {
     console.log(json);
     alert(json);
    },
    error: function () {
     alert('fail');
    }
   });
  }

步驟三:WebAPI中返回jsonp數據類型

Jsonp格式:

success_jsonpCallback({“Cookies”:”888888”})

由于這種格式與json格式有所不同,只用WebAPI里的返回IHttpActionResult或HttpRequestMessage類型不行,最后通過流的方式輸出才實現了這個格式。

WebAPI代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[Route("api/GetValue")]
  [HttpGet]
  public void GetValue()
  {
   string ccc = MyTools.Request.GetString("callbackparam");
   var a = new { name = "Cookies", value = MyTools.Cookies.GetCookiesValue("name") };
   string result = ccc + "({\"Cookies\":\"" + MyTools.Cookies.GetCookiesValue("name") + "\"})";
   //var response = Request.CreateResponse(HttpStatusCode.OK);
   //response.Content = new StringContent(result, Encoding.UTF8);
 
   HttpContext.Current.Response.Write(result);
   HttpContext.Current.Response.End();
   // return response;
  }
  [Route("api/SetValue/{id}")]
  [HttpGet]
  public void SetValue(int id)
  {
   //string domain = "";
   string domain = ".wbl.com";
   MyTools.Cookies.ClearCookies("name", domain);
   MyTools.Cookies.SetCookiesValue("name", id.ToString(), domain);
 
   string ccc = MyTools.Request.GetString("callbackparam");
   string result = ccc + "({\"result\":\"設置成功\"})";
 
   HttpContext.Current.Response.Write(result);
   HttpContext.Current.Response.End();
  }

最終效果:

ASP.Net WebAPI與Ajax進行跨域數據交互時Cookies數據的傳遞

后言:

這只是解決這個問題的一種方法。百度后還有一種通過第三方插件(Cross-Origin、Help Page)來處理的,后續在進行實驗。各位路過的大神如有更好的方法,望不要吝嗇,請賜教!菜鳥感激不盡!

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!

原文鏈接:http://www.cnblogs.com/wbl168/p/6870059.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 爱操在线 | 亚洲成人播放 | 亚洲精品毛片一区二区 | 国产黄a三级三级看三级 | 精品第一页 | 日韩三级在线 | 婷婷激情五月 | 在线色站 | 午夜精品视频 | 国产午夜精品一区二区三区 | 日本三级一区二区 | 欧美在线高清 | 亚洲免费观看 | 成人午夜精品久久久久久久蜜臀 | 久久黄视频 | 国产精品久久精品 | 91精品国产综合久久福利软件 | 亚洲精品乱码久久久久膏 | 米奇影视7777 | 久久久久综合视频 | 国产精品久久久久久久久久久久久久 | 九九热九九 | 久久精品国产亚洲一区二区三区 | 国产精品一区久久 | 久草在线视频网 | 欧美日韩精品久久久 | 在线观看五码 | 成年人免费在线看网站 | 午夜伦4480yy私人影院 | 亚洲精品一区二区三区 | 欧美日韩国产在线 | 精品国产一区二区三区小蝌蚪 | 国产精品久久久久久久久久久久久久 | 一区二区三区四区在线 | 中文字幕在线一区二区三区 | 午夜激情影院 | 羞羞视频免费网站 | 在线观看亚洲免费视频 | 亚洲五码在线 | 久久久国产精品久久久 | 国产成人黄色片 |