我们正在运行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请求,或者我们是否需要开始为预检请求开始实现我们自己的处理程序(如果是这样的例子会很棒:))?
感谢, 马蒂
答案 0 :(得分:1)
结帐this thread。我认为WebDAV安装在Web角色上(尽管无法确认)。您必须RDP到Web角色实例并检查是否是这种情况。如果是,则需要创建startup task以删除WebDAV。
您还可以查看this和that文章,了解如何通过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>