2013-02-06 30 views
3

在測試ServiceStack時遇到着名的Access-Control-Allow-Origin問題後,我在CORS上做了一堆閱讀以更好地理解問題。我也遇到this very helpful SO question被忽略的CORS設置,Access-Control-Allow- *標題未被寫入

但是,那裏的解決方案並不適合我。我嘗試了包括CorsFeature插件並手動設置端點配置,但在嘗試兩種方法後,我看到從服務器返回的響應頭沒有包含我的任何Access-Control-Allow-*標頭,因此問題依然存在。

我嘗試了另一種解決方案,最終爲我工作(通過與其他一些不相關的問題)。我增加了以下我服務的web.config:

<system.webServer> 
    [...snip...] 
    <httpProtocol> 
    <customHeaders> 
     <clear /> 
     <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> 

(其他讀者,請注意,IIS7 +這隻能見http://enable-cors.org/更多地瞭解使其他服務器上的CORS)

我問題是:爲什麼我能夠使用這個web.config方法獲得我的頭文件,而不是使用ServiceStack內置的CORS支持?有沒有配置設置我錯過了某個地方?

回答

2

我在查看更多@mythz的SO答案,並且遇到了this one。由於我還沒有完全理解的原因,添加請求過濾器(以及CorsFeature插件)可以讓所有事情按預期工作。我的預檢選項請求沒有出現錯誤,或者我的GET和POST發現了任何原始錯誤。

因此,簡而言之,我最終的解決方案是從該職位mythz的回答將代碼複製到我的AppHost.Configure()刪除我的web.config自定義頁眉。 (在我從我的web.config中刪除自定義標題之前,實際上我的標題翻了一番!)