3

我已经使用 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.

Firefox 在网站运行时是否有一些特别严格的限制http://localhost?我是否错过了 FF 需要的 Web.Config 中的某些内容?

谢谢!

## 编辑:

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

这是来自 chrome 开发工具的请求:

chrome 开发工具

4

3 回答 3

1

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

于 2013-09-04T15:28:11.077 回答
0

我在同样的情况下跑了。options-keyword 出现 405 HTTP 错误。好吧,解决方案是从 IISExpress(开发应用程序服务器)切换到 ISS 7.x。(当然)使用开发网络服务器有很大的限制。这解决了你为我提到的问题。

于 2013-08-03T07:52:50.827 回答
0

您可以尝试在 web.config 的 system.web -> handlers 下添加以下行吗?

<remove name="OPTIONSVerbHandler" />

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

于 2013-03-18T17:06:12.913 回答