我寫將由客戶,使他們需要處理跨域請求被用來在野外WCF服務。我在啓用我的開發服務器接受這樣的請求時遇到問題。這裏是場景:配置IIS快遞8啓用CORS
- 我在Visual Studio 2012的一個實例中運行WCF項目,使用IIS Express 8作爲特定端口上的服務器。
- 我在使用IIS Express 8作爲服務器的另一個Visual Studio 2012實例中運行客戶端項目。該項目使用AJAX消耗另一個項目中的服務。
當我在IE中運行客戶端項目時沒有問題,因爲IE不會發送預檢選項請求。當我在Chrome中運行它時,預檢選項請求會返回405方法不允許,並且Chrome會放棄該服務。以前的Chrome版本會忽略錯誤並繼續使用實際的POST請求(或Get,無論...),但後續版本似乎更具挑剔性。
我也有部署WCF項目運行到這一點,並通過OPTIONSVerbHandler移動到IIS處理程序映射列表的頂部解決它。
我應該指出的是,我使用的是最慷慨的web.config設置我能想到的,試圖讓CORS。比如我有這樣的WCF項目的配置:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Allow-Methods" value="*" />
<add name="X-Powered-By" value="*" />
</customHeaders>
</httpProtocol>
無論如何,任何客戶端跨域請求到WCF項目的代碼運行失敗,405錯誤。
任何幫助建立無論是WCF項目本身或IIS快遞8啓用CORS?
謝謝!
您是否正在爲REST使用WCF服務?你可能實際上想刪除'OptionsVerbHandler'並自己處理。或者,您可能想要公開'JSONP'。我建議你使用'ASP.Net Web-API'。 – Aron