2017-04-11 17 views
1

我有兩臺服務器:App & Web,App正在託管一個由OWIN保護的web API 2 API,Web是一個調用api的Angular 1.6應用程序。Web Api 2和Angular之間的CORS錯誤

我的頭看起來像這樣:

請求:

Host: app 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Access-Control-Request-Method: GET 
Access-Control-Request-Headers: authorization 
Origin: http://mysite 
Connection: keep-alive 

響應:

Access-Control-Allow-Headers: * 
Access-Control-Allow-Methods: * 
Access-Control-Allow-Origin: * 
Allow: GET 
Content-Length: 83 
Content-Type: text/html; charset=utf-8 
Date: Tue, 11 Apr 2017 16:41:04 GMT 
Server: Microsoft-IIS/10.0 
X-Powered-By: ASP.NET 

我已經打開了我的web.config包括:

<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Methods" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="*" /> 
    </customHeaders> 
</httpProtocol> 

我也有:

config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 

我的錯誤是:

原因:CORS頭「訪問控制允許來源」不匹配「(null)的

缺少什麼我在這裏和我怎麼做CORS錯誤消失了?

+0

在您的服務器嘗試改變這種反應,看看它是否工作。 Access-Control-Allow-Headers:Content-Type, Access-Control-Allow-Methods:GET,POST,選項 Access-Control-Allow-Origin:*。我認爲這個星號會全面起作用,但也許會造成一個問題。 – user2263572

+0

你應該弄清楚爲什麼瀏覽器已經決定了源代碼是'null'而不是你在請求頭文件中看到的'http:// mysite'源。 https://stackoverflow.com/questions/42239643/when-does-firefox-set-the-origin-header-to-null-in-post-requests/42242802#42242802列出了瀏覽器將決定原點的一些情況'空值'。我想在這種情況下最可能發生的一種情況是,在一些情況下會發生一些跨源重定向 – sideshowbarker

回答

1

當然張貼的問題後不久,我想通了:我的問題是雙重的:

我需要從WebApiConfig.cs

刪除

config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 

然後在啓動.cs

我需要移動

app.Us eCors(CorsOptions.AllowAll);

到頂部。

web.config部分在此時也被安全地移除。

感謝:Dreaded CORS issue with WebAPI and token