亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

asp.net web api2.0 ajax跨域解決方案

2019-11-17 01:58:19
字體:
來源:轉載
供稿:網友

asp.net web api2.0 Ajax跨域解決方案

Web Api的優缺點就不說了,直接說怎么跨域,我搜了一下,主要是有兩種。

一,ASP.NET Web API支持JSONP,分兩種

  1,利用JsonMediaTypeFormatter,具體參考這里:http://www.49028c.com/artech/p/cors-4-asp-net-web-api-03.html

上代碼:

新建JsonpMediaTypeFormatter類:

    public class JsonpMediaTypeFormatter : JsonMediaTypeFormatter    {        PRivate string callbackQueryParameter;        public JsonpMediaTypeFormatter()        {            SupportedMediaTypes.Add(DefaultMediaType);            SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/javascrJavascript回調函數中        /// </summary>        /// <param name="type"></param>        /// <param name="value"></param>        /// <param name="stream"></param>        /// <param name="content"></param>        /// <param name="transportContext"></param>        /// <returns></returns>        public override Task WriteToStreamAsync(Type type, object value, Stream stream, HttpContent content, TransportContext transportContext)        {            string callback;            if (IsJsonpRequest(out callback))            {                return Task.Factory.StartNew(() =>                {                    var writer = new StreamWriter(stream);                    writer.Write(callback + "(");                    writer.Flush();                    base.WriteToStreamAsync(type, value, stream, content, transportContext).Wait();                    writer.Write(")");                    writer.Flush();                });            }            else            {                return base.WriteToStreamAsync(type, value, stream, content, transportContext);            }        }        /// <summary>        /// 判斷是否為跨域請求        /// </summary>        /// <param name="callback"></param>        /// <returns></returns>        private bool IsJsonpRequest(out string callback)        {            callback = null;            if (HttpContext.Current.Request.HttpMethod != "GET")                return false;            callback = HttpContext.Current.Request.QueryString[CallbackQueryParameter];            return !string.IsNullOrEmpty(callback);        }    }

  • 在Global.asax中注冊JsonpMediaTypeFormatter
  • GlobalConfiguration.Configuration.Formatters.Insert(0, new JsonpMediaTypeFormatter());

  2,利用ActionFilterAttribute ,具體參考這里:http://stackoverflow.com/questions/9421312/jsonp-with-asp-net-web-api/18206518#18206518

  代碼:

新建 JsonCallbackAttribute 類

    public class JsonCallbackAttribute : ActionFilterAttribute    {        private const string CallbackQueryParameter = "callback";        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)        {            var callback = string.Empty;            if (IsJosnp(out callback))            {                var jsonBuilder = new StringBuilder(callback);                jsonBuilder.AppendFormat("({0})", actionExecutedContext.Response.Content.ReadAsStringAsync().Result);                actionExecutedContext.Response.Content = new StringContent("C(/"a/")");            }            base.OnActionExecuted(actionExecutedContext);        }        private bool IsJosnp(out string callback)        {            callback = System.Web.HttpContext.Current.Request.QueryString[CallbackQueryParameter];            return !string.IsNullOrEmpty(callback);        }    }

在Global.asax中注冊JsonCallbackAttribute

GlobalConfiguration.Configuration.Filters.Add(new JsonCallbackAttribute());

二,使用 Microsoft ASP.NET Web API 2 Cross-Origin Suppor

  使用 NuGe 安裝Microsoft ASP.NET Web API 2 Cross-Origin Support,這里說的很詳細

  然后在Global.asax中開啟針對CORS的支持,EnableCors加不加無影響的樣子。

測試實例:

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <script src="http://cdn.bootCSS.com/jquery/2.1.3/jquery.min.js"></script>    <title>測試 WebApi 跨域</title></head><body>    <form id="form1" runat="server">        <input type="button" id="btnGet" value="Get 點擊跨域查詢數據" />        <div id="bindData">        </div>        <input type="button" id="btnPost" value="Post 點擊跨域查詢數據" />    </form>    <script>        $('#btnGet').bind('click', function (e) {            $.ajax({                type: "GET",                url: "http://localhost:20128/api/UserInfo",                success: function (data) {                    var html = "";                    $.each(data, function (index, val) {                        html += "<ul><li>GroupName: " + val.Id + " -- " + val.Name + "</li></ul>";                    });                    $("#bindData").append(html);                }            });        });        $('#btnPost').bind('click', function (e) {            var user = { Id: '1', Name: '233' };            $.ajax({                type: "POST",                contentType: 'application/json; charset=utf-8',                data: JSON.stringify(user),                url: "http://localhost:20128/api/UserInfo",                success: function (data) {                    //var html = "";                    //$.each(data, function (index, val) {                    //    html += "<ul><li>GroupName: " + val.Id + " -- " + val.Name + "</li></ul>";                    //});                    //$("#bindData").append(html);                }            });        });    </script></body></html>

Ajax請求在Post數據的時候,一定要加上這樣項:

contentType: 'application/json; charset=utf-8',data: JSON.stringify(user),

就這樣,只是把網絡上有解決方案的整理了一下,放在了一切。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲在线视频观看| 最新亚洲国产精品| 亚洲国产中文字幕久久网| 欧美第一黄色网| 夜夜嗨av色综合久久久综合网| 久久成人精品视频| 欧美中文字幕在线播放| 欧美视频在线观看免费网址| 欧美激情综合色| 久久久久久久影视| 欧美日韩国产一区在线| 亚洲精品久久7777777| 78m国产成人精品视频| 欧美视频在线免费看| 精品在线欧美视频| 神马国产精品影院av| 国产精品手机播放| 亚洲国产欧美一区二区丝袜黑人| 亚洲激情免费观看| 日韩午夜在线视频| 激情亚洲一区二区三区四区| 欧美一区二区视频97| 精品美女国产在线| 成人激情视频在线观看| 国产91精品在线播放| 国产91精品久久久久久久| 丁香五六月婷婷久久激情| 日韩欧美在线观看| 大伊人狠狠躁夜夜躁av一区| 欧美肥臀大乳一区二区免费视频| 久久人人爽人人爽人人片av高清| 国产视频久久久| 国产suv精品一区二区| 不卡毛片在线看| 欧美超级免费视 在线| 欧美中文字幕视频在线观看| 国产欧美韩国高清| 日韩精品欧美国产精品忘忧草| 色午夜这里只有精品| 久久久久999| 欧美日韩亚洲一区二区| 成人97在线观看视频| 亚洲黄色av网站| 一本久久综合亚洲鲁鲁| 欧美另类在线播放| 欧美日韩免费观看中文| 成人啪啪免费看| 亚洲精品理论电影| 亚洲色图第一页| 自拍亚洲一区欧美另类| 国产成人激情视频| 欧美中文字幕视频| 亚洲大胆人体视频| 久久精品亚洲热| 欧美激情va永久在线播放| 亚洲综合一区二区不卡| 欧美视频在线免费看| 欧美午夜精品久久久久久人妖| 另类少妇人与禽zozz0性伦| 亚洲香蕉成视频在线观看| 亚洲黄一区二区| 亚洲欧洲在线观看| 日韩视频在线一区| 久久久亚洲网站| 欧美大片欧美激情性色a∨久久| 国产亚洲欧洲黄色| 欧美日韩人人澡狠狠躁视频| 97视频在线观看视频免费视频| 川上优av一区二区线观看| 久久亚洲精品国产亚洲老地址| 国产精品视频公开费视频| 亚洲影院色无极综合| 姬川优奈aav一区二区| 亚洲一区二区三区xxx视频| 亚洲美女又黄又爽在线观看| 91久久综合亚洲鲁鲁五月天| 日韩av免费看| 色av吧综合网| 欧美成人免费观看| 九九热r在线视频精品| 国产精品久久久| 成人av在线网址| 欧美精品一区三区| 久久久久国产一区二区三区| 欧美一级大片视频| 日韩有码在线视频| 久久精品影视伊人网| 亚洲一区二区三区毛片| 日本国产精品视频| 欧美电影免费在线观看| 欧美壮男野外gaytube| 亚洲人成电影网| 亚洲**2019国产| 成人av资源在线播放| 日本一欧美一欧美一亚洲视频| 庆余年2免费日韩剧观看大牛| 午夜精品一区二区三区在线视| 亚洲精品视频免费| 日韩欧美aⅴ综合网站发布| 国产欧美va欧美va香蕉在| 5566成人精品视频免费| 97精品国产97久久久久久| 亚洲va欧美va国产综合久久| 日韩在线观看免费网站| 欧美在线性视频| 欧美午夜精品伦理| 清纯唯美日韩制服另类| 久精品免费视频| 亚洲日本中文字幕| 亚洲欧美精品一区| 亚洲欧美中文日韩在线| 久久欧美在线电影| 精品亚洲一区二区三区四区五区| 91国内免费在线视频| 欧美专区福利在线| 日本亚洲精品在线观看| 亚洲国模精品一区| 96精品视频在线| 中日韩美女免费视频网站在线观看| 亚洲精品国产美女| 亚洲精品一区av在线播放| 国产日韩欧美在线观看| 欧美—级高清免费播放| 成人精品在线观看| 亚洲一区二区福利| 亚洲精品中文字幕女同| 最新91在线视频| 亚洲美女福利视频网站| 国产精品久久久久久久久久免费| 中文字幕9999| 国产精品国产自产拍高清av水多| 91精品国产综合久久久久久蜜臀| 91精品国产精品| 精品国偷自产在线视频| 久久精品小视频| 亚洲男人天堂2023| 成人h猎奇视频网站| 欧美日韩国产123| 91精品国产综合久久香蕉922| 成人在线国产精品| 97在线视频一区| 色综合老司机第九色激情| 中日韩美女免费视频网址在线观看| 高清日韩电视剧大全免费播放在线观看| 91人成网站www| 亚洲精品av在线播放| 久久精品人人做人人爽| 国产在线高清精品| 人人做人人澡人人爽欧美| 亚洲剧情一区二区| 国产亚洲欧美视频| 96pao国产成视频永久免费| 中文字幕亚洲一区在线观看| 久久久久久噜噜噜久久久精品| 亚洲精品视频免费在线观看| 国产精品亚洲自拍| 亚洲一区二区在线播放| 国产成人av在线播放| 午夜精品久久久久久久99热浪潮| 欧美日韩第一页| 国产精品久久一区| 亚洲精品成a人在线观看| 日韩av免费在线播放| 欧美激情国产日韩精品一区18|