<!--跨域--> <httpProtocol> <!--跨域配置開始--> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <!--支持全域名訪問,不安全,部署後須要固定限制爲客戶端網址--> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> <!--支持的http 動做--> <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type" /> <!--響應頭 請按照本身需求添加 這裏新加了token這個headers--> <add name="Access-Control-Request-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> <!--容許請求的http 動做--> </customHeaders> <!--跨域配置結束--> </httpProtocol>
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //默認返回 json GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add( new QueryStringMapping("datatype", "json", "application/json")); // 解決json序列化時的循環引用問題 config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
移步到:http://www.javashuo.com/article/p-psfpmimr-en.htmlhtml
4.跨域請求須要傳自定義頭致使請求失敗時web
跨域請求會先發送一個預處理請求再發送實際請求,預處理請求是OPTIONS類型,因此須要給他特殊處理一下json
(1)在Global.asax文件中添加如下方法:api
protected void Application_BeginRequest(object sender, EventArgs e) { var res = HttpContext.Current.Response; var req = HttpContext.Current.Request; //自定義header時進行處理 if (req.HttpMethod == "OPTIONS") { res.AppendHeader("Access-Control-Allow-Headers", "Content-Type, X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Date, X-Api-Version, X-File-Name,Token,Cookie"); res.AppendHeader("Access-Control-Allow-Methods", "POST,GET,PUT,PATCH,DELETE,OPTIONS"); res.StatusCode = 200; res.End(); } }
(2)在web.config的跨域配置中找到name=「Access-Control-Allow-Headers」 ,而後在它的value中加上本身所傳的自定義header名,以下圖跨域