跨域是个很蛋疼的问题。。。随笔记录一下。。。
一、安装nuget包:Microsoft.AspNet.WebApi.Core
二、在Application_Start方法中启用跨域
protected void Application_Start(){...GlobalConfiguration.Configuration.EnableCors();...}
三、在Controller中增加预检请求处理
[RoutePrefix("api/file")]public class FileController : ApiController{/// <summary>/// 处理预检请求/// </summary>/// <returns></returns>public string Options(){return string.Empty;}。。。。。。}
此代码解决下面错误:
Response to preflight request doesn't pass access control check: It does not have HTTP ok status
四、在Web.Config中的system.webServer节点下增加跨域配置
<system.webServer><httpProtocol><customHeaders><add name="Access-Control-Allow-Origin" value="*" /><add name="Access-Control-Allow-Headers" value="AuthToken, Authorization, Origin, Content-Type, Accept, X-Requested-With" /><add name="Access-Control-Allow-Methods" value="GET,HEAD,POST,OPTIONS" /></customHeaders></httpProtocol></system.webServer>
此配置解决如下错误:
或者是在Controller上通过EnableCors特性启用(需安装Microsoft.AspNet.WebApi.Cors包)
好了,上述四部曲包你解决,解决不了的话来打我。。。哈哈哈