Chrome 不知道 POST 请求
Posted
技术标签:
【中文标题】Chrome 不知道 POST 请求【英文标题】:Chrome Unaware of POST Request 【发布时间】:2014-09-02 09:58:46 【问题描述】:我知道这个标题听起来很奇怪,但让我描述一下我看到的行为:
我正在通过 jQuery 的$.ajax
方法进行 AJAX POST
调用
此 AJAX 调用设置了最大超时时间以及几个自定义标头
Chrome 发送 OPTIONS
请求并获得 200 响应(如“网络”选项卡中所示)
此后,Chrome 不会在“网络”选项卡中显示传出的POST
请求,随后 AJAX 调用就会超时。
这是奇怪的部分:
虽然请求未列在“网络”选项卡中,但通过 WireShark 观察网络流量可以清楚地显示出一个传出请求和来自服务器的即时(成功)响应。 这仅限于 Mac 上的 Chrome...所有其他浏览器都不会显示此问题 即使所有 Chrome 版本都相同,Mac 上的 Chrome 也有少数(极少数)实例不显示此问题。这是我正在使用的 JS sn-p:
$.ajax(
"type":"POST",
"cache":false,
"dataType":"json",
"url":"http://myserver.com/endpoint",
"crossDomain":true,
"xhrFields":
"withCredentials":true
,
"contentType":"application/x-www-form-urlencoded",
"headers":
"X-Test-Header.valueA":"123",
"X-Test-Header.valueB":"456"
,
"data":"a=something",
"timeout":10000
);
有什么可能导致这种情况的想法吗?
【问题讨论】:
是否可以发布您的http://myserver.com/endpoint
进行测试?此外,是否可以分享您使用的 Chrome 版本/构建以及您也在使用哪种服务器端语言?谢谢。
试过Log XMLHttpRequests
devtools
?
确保您没有在网络标签中意外应用过滤器
你的问题已经解决了吗?
【参考方案1】:
目的地是否收到请求?
我会从 ajax 调用参数中删除多余的 ",因为在这种情况下不需要它们("type": -> type:) 至少是奇怪的那个。
还有什么在 /endpoint ?一个php脚本?为什么不是/endpoint/script.php?
【讨论】:
是的,目的地收到了请求。正如我所提到的,看看 WireShark,机器甚至确实得到了预期的响应。至于端点 URL:这只是一个示例。真正的是有效的(同样,响应确实会返回到机器,只是 Chrome 不知道)。以上是关于Chrome 不知道 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章
python上传图片头像。一个post 提交不知道怎么写?这样的
CORS:在成功的 OPTIONS 请求后,Firefox 不发送 POST 请求......适用于 Chrome 和 IE
CORS:成功 OPTIONS 请求后,Firefox 不发送 POST 请求……在 Chrome 中有效