如果我在FireFox和Chrome中启用CORS,请帮助我。 WebAPi可以正常使用互联网,但不适用于Chrome / Firefox。
这是我在firefox控制台中获得的。
阻止跨源请求:同源策略禁止在http://localhost:51/api/abcservice/M2
读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。
提前致谢。
答案 0 :(得分:3)
CORS不依赖于浏览器,您必须在服务器端启用它。
安装CORS WebApi NuGet包:
Install-Package Microsoft.AspNet.WebApi.Cors
然后在申请开始时:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// CORS
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
答案 1 :(得分:0)
使用Web API,有时当您的请求在服务器端遇到异常时会收到CORS错误,因此请确保在Web API控制器上调试请求,并仔细检查原始标头是否已设置为响应
答案 2 :(得分:0)
与IE和Edge不同,Chrome和Firefox会在每次GET或POST之前发出额外的OPTIONS请求,这就是为什么你应该在global.asax中明确配置它的属性。试试这段代码:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("access-control-allow-origin", "*");
if (HttpContext.Current.Request.HttpMethod == "options")
{
HttpContext.Current.Response.AddHeader("access-control-allow-methods", "post, put, delete, get");
HttpContext.Current.Response.AddHeader("access-control-allow-headers", "content-type, accept");
HttpContext.Current.Response.AddHeader("access-control-max-age", "1728000");
HttpContext.Current.Response.End();
}
}