asp.net-mvc – IIS劫持CORS Preflight OPTIONS请求
|
我正在做一个CORS POST请求,并将Content-Type头设置为json。这会引发“预检OPTIONS”的启动请求(这是好的和预期的) 这个OPTIONS请求响应了200 OK,但这不是来自我的WebAPI应用程序。 我有一个自定义消息处理程序到位,它从来没有得到打击,所以请求在IIS之前得到响应,然后再打ASP.NET。 我已经找到了几个关于这个问题的帖子,他们说如下 >确保WebDav被卸载/删除/禁用 – 完成 但是,我的选择请求仍然被劫持。我的意思是,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上测试了相同的结果) 我已经尝试了一切我可以找到的主题,仍然无法解决我的问题。 帮助我StackOverflow,你是我唯一的希望。 解决方法有几件事情你可以尝试这里,所有web.config相关的,首先修改你的模块元素,以包含runAllManagedModulesForAllRequests =“true”的属性,如下所示:<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDavModule" />
</modules>
然后将您的处理程序设置如下: <handlers> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="WebDav" /> <remove name="OPTIONSVerbHandler" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll" preCondition="classicMode,bitness64" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> 这应该是诀窍,但如果没有,作为最后的手段,您可以强制IIS输出正确的标题与以下: <system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
请注意通配符值,您应该将其设置为您的站点将被托管的域名。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Azure中的ASP.NET会话状态提供程序[closed]
- asp.net-mvc – Resharper 5:如何设置内联代码块的默认格式
- asp.net-mvc – asp.net mvc formcollection
- asp.net-mvc – Asp.Net MVC Ajax.BeginForm没有通过Ajax提
- 版本化ASP.NET Web应用程序
- asp.net-mvc – 路由:如何在url中隐藏动作名称?
- asp.net – 在web.config中将子文件夹重写为子域
- asp.net-mvc-3 – 重定向与RedirectToRouteResult不工作从其
- asp.net-mvc – LINQ匿名类型MVC视图
- ASP.NET – meta:ResourceKey vs %$Resources:MyKey%
- asp.net – “无法启动IIS Express Web服务器”错
- asp.net-mvc – 在asp.net mvc中,单个项目与多个
- asp.net – 您在实施/使用WebDAV方面有哪些经验?
- asp.net – MVC 3 System.Web.Optimization捆绑单
- asp.net-mvc – 检查上传的文件是否是C#ASP.NET
- asp.net-mvc – Visual Studio找不到自定义工具R
- asp.net – 获取特定的会员提供商
- iis – ServerManager构造函数在测试环境中崩溃
- asp.net-mvc – 使用源代码的Real World ASP.NET
- asp.net-mvc-4 – ASP.NET Web API授权令牌提前到
