【发布时间】:2014-04-25 01:42:12
【问题描述】:
我正在发出 CORS POST 请求并将 Content-Type 标头设置为 json。这会触发一个 Preflight OPTIONS 请求触发(这是好的和预期的)
此 OPTIONS 请求以 200 OK 响应,但这不是来自我的 WebAPI 应用程序。
我有一个自定义消息处理程序,它永远不会被命中,所以请求在命中 ASP.NET 之前得到了 IIS 的响应。
我找到了几个关于这个主题的帖子,他们说如下
确保 WebDav 已卸载/删除/禁用 - 完成
确保 OPTIONSVerbHandler 已删除/更改为使用 aspnet_isapi.dll - 同时尝试
确保 extensionlessURLHandler 包含 OPTIONS 动词 - DONE
但是,我的选项请求仍然被劫持。我的意思是,IIS 以 200 OK 响应,但在响应中不包含 Access-Control-Allow-Origin 标头。它不包含此标头,因为它永远不会访问设置此标头的我的 WebAPI CORS 代码。
我能找到的两个听起来像我的问题的最好的帖子是
这里:JQuery stuck at CORS preflight and IIS ghost response
这里:http://brockallen.com/2012/10/18/cors-iis-and-webdav/
我尝试在 IIS 中打开失败请求跟踪 (FERB) 并将其设置为跟踪所有 200 个状态代码。我从来没有看到选项请求被记录...不确定这是否意味着 FERB 不跟踪 OPTIONS 请求,或者我是否需要更改 FERB 设置中的某些内容以使其跟踪 OPTIONS 请求,或者如果这是一个线索我的问题是什么?
这是在 IIS 7.5 上运行的 ASP.NET WebAPI 2.0(也在 IIS 8 和 IISExpress 上进行了测试,结果相同) 不管是什么浏览器(Chrome、FF 和 IE 都以同样的方式失败)
我已经尝试了所有我能找到的关于这个主题的方法,但仍然无法解决我的问题。
帮助我 StackOverflow,你是我唯一的希望。
【问题讨论】:
-
我也遇到了类似的问题,如果你能帮忙请告诉我stackoverflow.com/questions/28213210/…
-
微软发布 IIS CORS 模块为时已晚docs.microsoft.com/en-us/iis/extensions/cors-module/…
标签: asp.net-mvc iis asp.net-web-api cors