我正在进行CORS POST请求,并将Content-Type标头设置为json。这会触发Preflight OPTIONS请求(这是好的和预期的)
这个OPTIONS请求被回复了一个200 OK,但这不是来自我的WebAPI应用程序。
我已经安装了自定义消息处理程序,但它从未被使用过,所以似乎请求在到达ASP.NET之前就已经被IIS响应了。
我找到了几篇关于此主题的文章,它们说:
确保WebDav已卸载/删除/禁用 - 完成
确保OPTIONSVerbHandler已被删除/更改为使用aspnet_isapi.dll - 尝试了两种方式
确保extensionlessURLHandler包括OPTIONS动词 - 完成
然而,我的options请求仍然被劫持。我的意思是,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,你是我的唯一希望。