OPTIONS 405 (Method Not Allowed) 无论服务器发送 Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST
Posted
技术标签:
【中文标题】OPTIONS 405 (Method Not Allowed) 无论服务器发送 Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST【英文标题】:OPTIONS 405 (Method Not Allowed) regardless server sends Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST 【发布时间】:2012-10-28 14:02:28 【问题描述】:我正在尝试进行跨域请求,并且我的服务器配置为发送以下标头:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:x-requested-with, Authorization
Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST
Access-Control-Allow-Origin:*
但是当发出 OPTION 请求时,我收到 OPTIONS 405 (Method Not Allowed)
错误。
任何想法是什么问题以及如何解决它?
【问题讨论】:
Access-Control-Allow-Origin Multiple Origin Domains?的可能重复 【参考方案1】:我会建议 2 个解决方案:
1) 如果您使用的是 WebAPI,您需要实现按惯例应如下所示的选项方法:
public class XXXController : ApiController
// OPTION http-verb handler
public string OptionsXXX()
return null; // HTTP 200 response with empty body
...
2) 如果您不使用 WebAPI,请尝试了解代码的哪一部分触发了 OPTION 调用的 OPTIONS 405 (Method Not Allowed)
错误。在这种情况下,我会检查是否尝试将这些 <customHeaders/>
添加到 Web.config
文件中:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- CORS temporary solution -->
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Authorization, Accept, X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="OPTIONS, TRACE, GET, HEAD, POST, PUT" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
【讨论】:
【参考方案2】:您的 Web 服务器/应用程序可能已配置为为每个 HTTP GET 动词和 POST 动词请求发送上述响应标头。但是您的 Web 服务器是否配置为处理 HTTP OPTIONS 动词?
如果您需要更多详细信息,请提供您正在使用的网络服务器和应用程序编程技术。
一点背景知识,当您有一个带有一些自定义请求标头的跨域请求时,浏览器会发送一个 OPTIONS 请求。此请求在实际请求之前发出。只有当此请求返回您提到的响应标头时,浏览器才会发出实际请求。
// 这些 OPTIONS 请求称为预检请求——通常浏览器开发工具不会在其网络选项卡中跟踪它们。f
【讨论】:
感谢您的评论。服务器是 IIS 7。如何配置它来处理 OPTIONS? 听起来是个不错的方向。你能提供一些关于如何处理HTTP Options
动词的推荐链接吗?
@Blaise 处理选项动词的最短解释在***.com/a/13646169/570239 中进行了解释-有关如何生成 web api codeguru.com/csharp/.net/net_asp/…。对于 web api 2 检查asp.net/web-api/overview/security/…
最后一条评论终于解决了我对 webapi 2 的问题:Install-Package Microsoft.AspNet.WebApi.Cors 和 httpEnableConfig.EnableCors()【参考方案3】:
您需要修改默认的 OPTIONSVerbHandler。如果使用 asp classic,则意味着在您的 Web.config 文件中添加以下行:
<handlers>
<remove name="OPTIONSVerbHandler" />
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" />
</handlers>
【讨论】:
以上是关于OPTIONS 405 (Method Not Allowed) 无论服务器发送 Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST的主要内容,如果未能解决你的问题,请参考以下文章
OPTIONS 405 (Method Not Allowed) 无论服务器发送 Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST
Vue报错:OPTIONS 405 Method Not Allowed以及CORS跨域错误
HTTP 405 错误 – 方法不被允许 (Method not allowed)
今天遇到 Request failed: method not allowed (405)。 错误,特此在网上翻了翻
vue--axios使用post方法与后台进行异步传值是报错POST http://localhost:8080/api/AddEmployeeApi 405 (METHOD NOT ALLOWED)