iss7不允许OPTIONS预检请求POST请求 - 如何启用?

时间:2012-12-06 12:39:03

标签: jquery iis-7 azure cors preflight

我们正在运行Windows Azure中托管的WCF服务,并尝试从其他地方托管的网站执行POST请求,但事实证明这非常棘手。显然,在iis7方面的实际POST请求之前允许OPTIONS预检请求似乎真的很难。

即使我们在web.config <system.webserver>中有定义

  <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Origin,X-Requested-With,Content-Type,Accept" />
        <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS"/>
      </customHeaders>
    </httpProtocol>

和安全

<security>
  <requestFiltering>
    <verbs>
      <add verb="OPTIONS" allowed="true" />
    </verbs>
  </requestFiltering>
</security>

我们不断收到HTTP 405 Method Not Allowed响应。

我在stackoverflow中尝试了不同帖子中的多个技巧,但我开始绝望,因为似乎没有任何工作......网站在Chrome中运行,因为它似乎不关心预检响应但是IE挂起在HTTP上405响应。

有没有人知道有可能通过web.config(以及如何)允许预检OPTIONS请求,或者我们是否需要开始为预检请求开始实现我们自己的处理程序(如果是这样的例子会很棒:))?

感谢, 马蒂

2 个答案:

答案 0 :(得分:1)

结帐this thread。我认为WebDAV安装在Web角色上(尽管无法确认)。您必须RDP到Web角色实例并检查是否是这种情况。如果是,则需要创建startup task以删除WebDAV。

您还可以查看thisthat文章,了解如何通过appcmd或vbscript在IIS中配置动词(两者都可以通过启动任务执行)

似乎必须在Application Host配置级别配置这些内容,而不允许在web.config级别配置。

答案 1 :(得分:0)

IIS(至少版本7. *)肯定存在预检请求处理的错误。 我使用经典的asp并将此代码添加到Web.config解决了问题

    <handlers>
        <remove name="OPTIONSVerbHandler" />
        <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" />
    </handlers>