2016-04-08 150 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