2013-03-18 62 views
3

我已經設置了ASP.NET的Web API一個REST API並啓用CORS像這樣:的ASP.NET Web API CORS工作正常,在Chrome和Safari,但不能在Firefox

<system.webServer> 
<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
    </customHeaders> 
</httpProtocol> 
</system.webServer> 

jQuery的AJAX調用在Chrome和Safari中工作,但在Firefox中,我得到一個NetworkError: 405 Method Not Allowed

當網站是http://localhost時,Firefox是否有一些特別強悍的限制?我錯過了FF中需要的Web.Config中的一些東西嗎?

謝謝!

##編輯:

它看起來像它是不起作用的期權方法。 Chrome中不允許使用OPTION方法,但Chrome繼續進行GET請求。 Firefox爲OPTION賦予405,然後永遠不會產生GET。

這是Chrome瀏覽器開發工具的要求:

chrome dev tools

+0

你能共享原始請求如何看起來像FF?以及如何從Chrome/Safari的請求看起來像它的工作.. – 2013-03-18 15:30:49

回答

0

你可以嘗試添加以下行下的System.Web - 在web.config中>處理程序?

<刪除名稱= 「OPTIONSVerbHandler」 / >

這種默認的處理程序可能會阻止你的選擇要求

+0

它沒有效果,但聽起來很合理,一些處理程序/模塊/任何處理選項。我發現了與討論WebDAV模塊的類似問題(例如https://gist.github.com/eugeneagafonov/4338381) – Cotten 2013-03-21 09:02:26

0

我在同樣的情況跑去。 options-keyword增加了405 HTTP錯誤。那麼,解決方案是從IISExpress(開發應用程序服務器)切換到ISS 7.x.使用開發Web服務器有(當然)顯着的限制。這解決了你爲我提到的問題。

+0

什麼是ISS 7.x? – Adrian 2014-06-12 06:44:44

1

嘗試使用固定域名,而不是在我們這裏「*」的問題解決了 <add name="Access-Control-Allow-Origin" value="http://localhost" />

相關問題