1、安装Cors
2、修改WebApiConfig文件
增加如下代码:
config.EnableCors(new EnableCorsAttribute(ConfigurationManager.AppSettings["corsOrigins"], "*", "*") { SupportsCredentials = true });
整体结果如下:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
// 将 Web API 配置为仅使用不记名令牌身份验证。
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.Filters.Add(new RequestAuthorizeAttribute());// 权限验证
config.Filters.Add(new BmsExceptionFilterAttribute());// 异常处理
// 跨域处理
config.EnableCors(new EnableCorsAttribute(ConfigurationManager.AppSettings["corsOrigins"], "*", "*") { SupportsCredentials = true });
// Web API 路由
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
3、修改配置文件
<add key="corsOrigins" value="http://a.b.com,http://c.b.com" />
大功告成,可以跨域访问接口了。
备注:
1、入了withCredentials之后,Access-Control-Allow-Origin就不能用“*”了
2、发了withCredentials报文头,服务器就要允许客户端带这个报文头
‘Access-Control-Allow-Credentials:true’