在测试ServiceStack时遇到着名的Access-Control-Allow-Origin问题后,我在
CORS上做了一堆阅读以更好地理解问题.我也遇到了
this very helpful SO question.
但是,那里的解决方案对我不起作用.我尝试包含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支持?是否有配置设置我在某处丢失?
最佳答案 我正在审查更多
@mythz的SO答案,并且遇到了
this one.由于我还没有完全理解(原因),添加请求过滤器(以及CorsFeature插件)允许一切按预期工作.我的预检OPTIONS请求或我的GET和POST上的任何原因错误都没有出错.
因此,简而言之,我的最终解决方案是将mythz在该帖子中的答案中的代码复制到我的AppHost.Configure()中,并删除我的web.config自定义标头. (在我从web.config中删除自定义标题之前,我实际上是将标题翻了一倍!)