2013-03-18 69 views
3

我已经设置了ASP.NET的Web API一个REST API并启用CORS像这样:的ASP.NET Web API CORS工作正常,在Chrome和Safari,但不能在Firefox

<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是否有一些特别强悍的限制?我错过了FF中需要的Web.Config中的一些东西吗?

谢谢!

##编辑:

它看起来像它是不起作用的期权方法。 Chrome中不允许使用OPTION方法,但Chrome继续进行GET请求。 Firefox为OPTION赋予405,然后永远不会产生GET。

这是Chrome浏览器开发工具的要求:

chrome dev tools

+0

你能共享原始请求如何看起来像FF?以及如何从Chrome/Safari的请求看起来像它的工作.. – 2013-03-18 15:30:49

回答

0

你可以尝试添加以下行下的System.Web - 在web.config中>处理程序?

<删除名称= “OPTIONSVerbHandler” / >

这种默认的处理程序可能会阻止你的选择要求

+0

它没有效果,但听起来很合理,一些处理程序/模块/任何处理选项。我发现了与讨论WebDAV模块的类似问题(例如https://gist.github.com/eugeneagafonov/4338381) – Cotten 2013-03-21 09:02:26

0

我在同样的情况跑去。 options-keyword增加了405 HTTP错误。那么,解决方案是从IISExpress(开发应用程序服务器)切换到ISS 7.x.使用开发Web服务器有(当然)显着的限制。这解决了你为我提到的问题。

+0

什么是ISS 7.x? – Adrian 2014-06-12 06:44:44

1

尝试使用固定域名,而不是在我们这里“*”的问题解决了 <add name="Access-Control-Allow-Origin" value="http://localhost" />

相关问题