ASP.NET Web API CORS在Chrome和Safari中运行良好,但在Firefox中不行

时间:2013-03-18 15:25:02

标签: firefox asp.net-web-api cors

我已经使用ASP.NET Web API设置了一个REST API,并启用了CORS,如下所示:

<system.webServer>
 <httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
  </customHeaders>
 </httpProtocol>
</system.webServer>

jQuery ajax调用适用于Chrome和Safari,但在Firefox中我得到NetworkError: 405 Method Not Allowed

当网站http://localhost时,Firefox是否有一些特别严格的限制?我错过了我需要的Web.Config吗?

谢谢!

##编辑:

看起来它是OPTION方法不起作用。 Chrome中也不允许使用OPTION方法,但Chrome仍在继续制作GET请求。 Firefox为OPTION提供405,然后永远不会进行GET。

这是来自chrome dev工具的请求:

chrome dev tools

3 个答案:

答案 0 :(得分:1)

尝试使用修复域而不是“*”解决了我们的问题 <add name="Access-Control-Allow-Origin" value="http://localhost" />

答案 1 :(得分:0)

您可以尝试在system.web - &gt;下添加以下行吗? web.config中的处理程序?

&lt; remove name =“OPTIONSVerbHandler”/&gt;

此默认处理程序可能会阻止您的选项请求

答案 2 :(得分:0)

我遇到了同样的情况。 options-keyword上升了405 HTTP错误。嗯,解决方案是从IISExpress(开发应用程序服务器)切换到ISS 7.x.使用开发Web服务器(当然)存在重大限制。这解决了你提到的问题。