跨域是个很蛋疼的问题。。。随笔记录一下。。。
一、安装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包)
好了,上述四部曲包你解决,解决不了的话来打我。。。哈哈哈