Chrome不识别POST请求

3

我知道这个标题听起来很奇怪,但是让我描述一下我所看到的行为:

  • 我正在通过jQuery的$.ajax方法进行AJAX POST调用
  • 此AJAX调用具有设置的最大超时时间以及几个自定义标头
  • Chrome发送一个OPTIONS请求并收到200响应(如网络选项卡中所示)
  • 之后,Chrome在网络选项卡中不显示传出的POST请求,并且AJAX调用随后超时。

以下是奇怪的部分:

  • 尽管请求未在网络选项卡中列出,但通过WireShark观察网络流量清楚地显示了传出请求和服务器的立即(成功)响应。
  • 这仅限于Mac上的Chrome...所有其他浏览器都没有显示此问题
  • 有一些(非常少)情况下,即使所有Chrome版本都相同,Mac上的Chrome也不显示此问题。

以下是我使用的JS代码片段:

$.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
});

有什么想法会导致这个问题发生?

1
是否有可能将您的 http://myserver.com/endpoint 发布以进行测试?另外,如果可以分享您使用的 Chrome 版本/构建版本以及服务器端语言是什么,那就太感谢了。谢谢。 - Oscar Jara
尝试在devtools中记录XMLHttpRequests了吗? - guest271314
确保您没有意外地在网络选项卡中应用了过滤器。 - jornare
你已经解决了这个问题吗? - GuyT
1个回答

0

目标是否收到请求?

我会删除ajax调用参数中多余的引号,因为在这种情况下它们是不必要的("type": -> type:),至少将其排除在外。

此外,在/endpoint处有什么?一个php脚本吗?为什么不是/endpoint/script.php?


是的,目标端收到了请求。正如我所提到的,在查看WireShark时,机器甚至得到了预期的响应。至于终端点URL:这只是一个示例。真实的URL是有效的(而且再次强调,响应确实返回到机器,只是Chrome不知道)。 - Steve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接