POST 方法自动转换为 OPTIONS

Posted

技术标签:

【中文标题】POST 方法自动转换为 OPTIONS【英文标题】:POST Method got converted to OPTIONS automatically 【发布时间】:2015-07-14 18:18:42 【问题描述】:

基本上我使用的是 POST 方法,但它会自动转换为 OPTIONS 方法。我知道浏览器会这样做,但也读到它很好,应该得到 201 的响应,但在我的情况下,它的行为不像预期的那样,我也在请求标头中尝试了 Access-Control-Allow-Methods 但没有得到任何东西.

这就是我的请求的样子:

OPTIONS http://xyz/abc
Accept: application/json
Content-Type: application/json

回复:

405, Method Not Allowed
Access-Control-Allow-Origin: *
Date: Tue, 05 May 2015 06:15:19 GMT
Connection: close
Accept-Ranges: bytes
Access-Control-Allow-Headers: authorization, content-type
Content-Length: 0
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD

有谁能告诉我这个问题的原因,以及在经过足够的研究之后,这可能是什么原因在我看来一切都很好。 提前致谢。

【问题讨论】:

您的 OPTIONS 响应是什么。不是201吗? 是跨域请求吗? OPTIONS 响应是 405,我认为可能是跨域问题,不确定。 搜索 CORS 预检请求 AJAX in Chrome sending OPTIONS instead of GET/POST/PUT/DELETE? 的可能重复项 【参考方案1】:

您可能会在跨域资源共享的 POST 请求期间看到飞行前检查。我不知道您的网络服务器需要如何设置才能支持此功能,但这篇 Wikipedia 文章可能是第一个帮助:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

最简单的解决方案是在与您加载网页的位置相同的源上执行 POST 请求。反向代理可能是一个合理的解决方案。

【讨论】:

以上是关于POST 方法自动转换为 OPTIONS的主要内容,如果未能解决你的问题,请参考以下文章

将日期时间转换为日期:Post 方法显示失败

如何防止“+”在 Django request.POST 方法中转换为空格?

JQuery POST 请求转换为 OPTIONS。为啥?

改造 POST 响应转换失败,无影无踪

Kotlin > Spring Boot > 使用路由器 DSL,POST 方法主体,无法将 JSON 转换为 POJO

JQuery:将 GET URL 转换为 POST