WebApi 2.2 + Chrome = CORS 405 错误

Posted

技术标签:

【中文标题】WebApi 2.2 + Chrome = CORS 405 错误【英文标题】:WebApi 2.2 + Chrome = CORS 405 error 【发布时间】:2014-10-27 05:54:41 【问题描述】:

我有 2 个项目设置:

    仅使用 html 和 durandal 并使用 $.ajax 调用 webapi post 方法的网站。它位于 localhost:33432 并调用第二个站点(请注意,ajax 调用没有任何特殊之处,除了 Durandal 添加的任何内容,并且使用的是最新的 2.x 版本的 jquery)

    位于 localhost:32287 上的 Web API 网站在 global.asax.cs 文件中启用了这样的 cors:

    GlobalConfiguration.Configuration.EnableCors(new EnableCorsAttribute("", "", "*"));

    web.config 文件是两个站点的骨干 MVC 5.2.2。完成 system.webserver 部分中的删除等。

    本地主机上的 Internet Explorer 没有问题,因为它不发出 OPTIONS 请求,因此没有问题。如果它被发布到生产中的单独域,它会这样做。 (我们已经试过了)

另一方面,Chrome 无法在 OPTIONS 请求中返回 405 错误。以下是 Chrome 发送和接收的内容:

Remote Address:[::1]:47806
Request URL:http://localhost:47806/Contacts/ValidateLogin
Request Method:OPTIONS
Status Code:405 Method Not Allowed
Request Headersview parsed
OPTIONS /Contacts/ValidateLogin HTTP/1.1
Host: localhost:47806
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: POST
Origin: http://localhost:32287
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36
Access-Control-Request-Headers: accept, content-type
Accept: */*
DNT: 1
Referer: http://localhost:32287/XXXXX
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Response Headersview source
Allow:POST
Cache-Control:no-cache
Content-Length:76
Content-Type:application/json; charset=utf-8
Date:Tue, 02 Sep 2014 20:59:36 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?RDpcTGluY29sbiBQZWFrXFBNTlxEbnNcTHBwLk5ldHdvcmsuQXBpXENvbnRhY3RzXFZhbGlkYXRlTG9naW4=?=

顺便说一句,本地 GET 不会发生这种情况。 Chrome 只是让它在没有 OPTIONS 的情况下运行。

任何想法为什么我会收到此错误并且它不仅仅是通过?

谢谢!

【问题讨论】:

【参考方案1】:

尝试使用 --disable-web-security 启动 chrome

Ubuntu google-chrome --disable-web-security 要么 chrome.exe --disable-web-security 然后再试一次

【讨论】:

以上是关于WebApi 2.2 + Chrome = CORS 405 错误的主要内容,如果未能解决你的问题,请参考以下文章

重复的访问控制允许来源:* 导致 COR 错误?

R语言实战——2.2基本统计分析

WebAPi - Firefox 和 chrome 中的 CORS

WebAPI 2.2 不支持 substringof 函数

ASP.NET Core 2.2 WebAPI 405 方法不允许

向 ASP.NET WebApi 2.2 添加身份验证