|
最近因为业务需要,需要写个接口,尝试了使用下WebApi,就遇到的跨域问题做个说明。
跨域很好理解,就是当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同的时候,就是跨域。
请求调用Api,报错如下:

解决方法:
1. 安装NuGet包: Microsoft.AspNet.WebApi.Cors,安装方法在此不再概述;
2. 在App_Start的WebApiConfig中添加跨域配置:
namespace WebApi
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
//跨域配置
config.EnableCors();
// Web API 路由
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
网上搜索跨域问题解决,大致的方法都是如此,但本次尝试发现按此步骤后问题还是没有解决,最后经过多次尝试,还有第三步;
3. 在Web.config的webServer中添加此段代码,跨域问题解决。
<system.webServer>
<!-- 跨域访问必须添加 -->
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
<!-- 跨域访问必须添加 -->
</system.webServer>
|