WebAPi - Firefox和Chrome中的CORS

时间:2014-10-16 09:52:34

标签: jquery asp.net-web-api cors

如果我在FireFox和Chrome中启用CORS,请帮助我。 WebAPi可以正常使用互联网,但不适用于Chrome / Firefox。

这是我在firefox控制台中获得的。

阻止跨源请求:同源策略禁止在http://localhost:51/api/abcservice/M2读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。

提前致谢。

3 个答案:

答案 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 }
        );
    }
}

Source

答案 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();
        }
}