2016-04-08 151 views
1

来自IIS 7.5的Web API没有响应Chrome & Firefox。 我在镀铬 中收到以下错误否请求的资源上存在“Access-Control-Allow-Origin”标头。原因'http://10.xx.xx.xx:81'因此不允许访问Chrome和Firefox上的CORS问题

Firefox抛出401未经授权的错误。

完美的作品在IE 11

是否有这些浏览器所需的任何额外的设置?

回答

0

“资源使一个跨域HTTP请求时,它比第一资源本身提供了一个不同的域请求资源” 您可以使用Chrome的插件,允许CORS:

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

+0

这将无法工作在浏览器在控制的环境中使用。这也不是一个通用的解决方案。服务器端修补程序也可以解决Firefox的问题。 – chaitu301

+0

我试图设置IIS,如下所述,但也没有奏效。 http://webprojectsolution.blogspot.ca/2016/04/how-to-resolve-cors-issues-in-web-api.html – chaitu301

1

首先安装的WebAPI一个Cors NuGet包:

Install-Package Microsoft.AspNet.WebApi.Cors 
WebApiConfig.cs文件

然后:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     var cors = new EnableCorsAttribute("*", "*", "*"); 
     config.EnableCors(cors); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     //other code 
    } 
} 

通过这种方式,您可以在全局范围内启用CORS标头,以允许来自任何域的跨站点请求。如果你想允许从只有一个(或清单)域跨站点的请求,然后更改的EnableCorsAttribute构造函数的参数:

new EnableCorsAttribute("http://alloweddomain.com", "*", "*"); 

您也可以在控制器或行动的基础上应用的EnableCorsAttribute

官方文档的详细信息:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

+0

感谢Federico,但正如你所看到的,我尝试了所有的选择。我正在使用aps.net web api 2.2。它在IE上运行正常,但在Chrome和Firefox中失败。是否有作为示例参考,我可以安装和检查? – chaitu301

+0

我会检查你提供的链接,看看我错过了什么。 – chaitu301

+0

在web.config中启用CORS解决了Firefox和Chrome的问题.http://enable-cors.org/server_iis7.html – chaitu301