2013-06-21 22 views
1

我有一個使用IISExpress在本地運行的ASP.NET WebApi應用程序,它允許我接受來自任何域的請求。我正在使用DelegatingHandler這個類似於提供的一個this blob post爲什麼我無法向託管在IIS中的API發出跨源請求?

本地這個運行完美,但上傳到Azure網站後,我得到了鉻下的典型'Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.'

我試圖通過在沒有輸出的處理程序中添加跟蹤語句來進行調試,它看起來像SendAsync永遠不會被執行,就好像IIS正在響應OPTIONS請求而不是將它傳遞給我的應用程序。

有沒有人遇到類似的問題,從開發到生產?

回答

3

IIS(包括Azure網站中的IIS)具有默認的OPTIONS處理程序。您需要在Web.config中將其刪除。它在消息處理程序有機會作出響應之前回答OPTIONS調用。

<configuration> 
    ... 
    <system.webServer> 
    <handlers> 
     <remove name="OPTIONSVerbHandler" /> 
     ... 
    </handlers> 
    </system.webServer> 
</configuration> 
+0

而這看起來IISExpress不會。 –

+0

是的,這就是爲什麼直到您部署在IIS中才會遇到此問題。在本地IIS服務器中也可以看到相同的行爲。 – Badri

+0

這似乎無法解決運行PHP的Azure網站上的問題。在請求實際傳遞給PHP代碼之前,IIS仍然會響應。 –

相關問題