我正在使用JavaScript的最终版本来实现ASP.NET友好的API。根据各种教程,我在我的web.config中启用了CORS:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
使用上述方法,跨域GET和POST请求可以正常工作,但是PUT和DELETE请求都会失败。
在Chrome:
方法PUT不允许访问-控制-允许-方法。 方法删除不允许访问-控制-允许-方法.
有什么额外的东西需要得到放置和删除动词跨域工作吗?
发布于 2012-09-20 14:11:33
它看起来像是添加了另一个自定义标头,将其排序如下:
<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>
发布于 2012-12-20 16:06:10
此外,除了Nathan之外,请确保禁用了WebDAV IIS模块并在web.config中设置了runAllManagedModulesForAllRequests="true"
设置:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
否则,preflight CORS requests (用于PUT、DELETE方法和发送附加选项请求)将无法工作。
发布于 2015-05-22 00:11:04
克服WEBAPI2.2中CORS问题的非常简单的解决方案。
在您的WebApi Config文件中添加以下内容。
var cors = new EnableCorsAttribute("*", "*", "*");
Config.EnableCors(cors);
添加之前,请确保删除Web.config文件中的自定义标头。
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, X-Token" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
如果在WebApiconfig中同时启用了自定义头和CORS,您将面临cors错误。
添加在WebApi配置中启用的cors将解决这个问题。
https://stackoverflow.com/questions/12521499
复制相似问题