http-headers – 忽略CORS设置,不写入Access-Control-Allow- *标头

在测试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中删除自定义标题之前,我实际上是将标题翻了一倍!)

点赞