Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery Ajax post请求在Chrome上被挂起_Javascript_Jquery_Ajax_Google Chrome - Fatal编程技术网

Javascript jQuery Ajax post请求在Chrome上被挂起

Javascript jQuery Ajax post请求在Chrome上被挂起,javascript,jquery,ajax,google-chrome,Javascript,Jquery,Ajax,Google Chrome,我有一个jQuery客户端向Spring控制器发出Ajax post请求。 在服务器端,没有记录任何错误。 在客户端,请求被挂起很长一段时间(分钟),然后可能会在ERR_SPDY_PROTOCOL_ERROR或ERR_CONNECTION_关闭的情况下失败 这个问题在Chrome上是可以重现的,但在Firefox上不是。已验证的受影响版本为70.0.3538.77,可能还有其他版本。 此外,问题发生在应用程序的特定部署上,而不是在开发或生产的其他地方 客户端在该环境上发送HTTPS 2请求。在开

我有一个jQuery客户端向Spring控制器发出Ajax post请求。 在服务器端,没有记录任何错误。 在客户端,请求被挂起很长一段时间(分钟),然后可能会在ERR_SPDY_PROTOCOL_ERROR或ERR_CONNECTION_关闭的情况下失败

这个问题在Chrome上是可以重现的,但在Firefox上不是。已验证的受影响版本为70.0.3538.77,可能还有其他版本。 此外,问题发生在应用程序的特定部署上,而不是在开发或生产的其他地方

客户端在该环境上发送HTTPS 2请求。在开发环境中,它是HTTP1.1。在服务器上,所有请求都记录为1.1

没有明显的原因,请求开始通过,但这是一个反复出现的问题,我们希望解决它。 由于问题开始出现,我无法重现它并检查问题是否是到服务器的连接太多(超过6个)。 我使用三台DNS服务器,最后一台是谷歌的8.8.8.8

我正在寻找一个代码修复或提示,这是否可能与服务器安装有关。 我几乎可以肯定,它是客户端代码和网络的结合

问题不在于:

  • 防病毒()

  • 预测服务相关()-关于代理和连接的注释似乎更相关

  • Ad阻止程序扩展/插件()

我尝试过但没有成功的:

什么不能回答这个问题:

在客户端,我尝试了清除浏览器数据、刷新套接字和私人浏览/隐姓埋名

有时,很少会绕过错误的唯一一件事是隐姓埋名、刷新套接字以及清空缓存chrome://net-internals/#events

正在处理使用$.post的单独请求:

$.post("someotherpath/update", $("#someForm").serialize())
    .done(function (data) {
        //...
     })
     .fail(function (data) {
         //...
     })
     .always(function () {
         //...
     });
服务器端:

@RequestMapping(value="/somepath/update", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public @ResponseBody String update(ModelClass model) {
    JSONObject result = new JSONObject();
    //...
    return result.toString();
}
如果相关,则有以下过滤器。恐怕我现在无法发布更多的内容:

@Configurable
public class Filter1 extends OpenEntityManagerInViewFilter implements Filter{

    public void doFilterInternal(HttpServletRequest httpReq, HttpServletResponse httpResp, FilterChain chain)
        throws ServletException, IOException {
        //...
    }
}


@Configurable
public class Filter2 extends OncePerRequestFilter implements Filter{

    public void doFilterInternal(HttpServletRequest httpReq, HttpServletResponse httpResp, FilterChain chain)
        throws ServletException, IOException {
        //...
    }
}

@Order(/* very small integer */)
public class Filter3 extends OncePerRequestFilter {

}
预期结果是代码应该通过成功回调。
相反,请求被挂起几分钟,然后进入错误回调。

$.post
正在调用
$.ajax
,只是默认了几个选项

$.post
默认值
contentType
“application/x-www-form-urlencoded;charset=UTF-8”
,这将与序列化表单数据负载一致

您对
$.ajax
的调用将
contentType
设置为
false
——这可能会导致浏览器向服务器发送飞行前选项请求,这可能会导致您体验到的行为差异


我建议您阅读有关
jQuery.ajax()
的详细信息,以及基于的各种行为,您的jQuery版本是…?:您是否尝试过使用postman或curl发送基本请求以确认服务器是否对相同类型的请求做出了正常响应?谢谢您的评论@CodyG。版本是1.7.2。我还没有试过邮递员,但我想试一下Firefox就足够了。需要考虑的是:我遇到了各种各样的问题,因为我在中打开了一个标志chrome://flags/. flag
实验性web平台功能
打开一些web服务器无法处理的新标题。测试时也尝试重置这些标志。请看一看chrome开发者工具(按Win上的F12键),然后查看网络选项卡,并尝试运行代码。它应该显示您正在发送的数据和可能出现的任何错误,并让我们知道结果是什么。还可以尝试比较Chrome/Firefox/Chrome incognition上的输出,以检查协议。如果页面url是“https”,那么您尝试访问的后端代码也应该受到保护。我也遇到过类似的问题。谢谢你的回答。我需要将contenttype设置为false,因为我正在发送一些文件。但你是对的。它可能是一个跨域请求(由于DNS重定向)。不幸的是,我现在没有办法知道。我会支持你的答案,因为它很有用,但我不能接受。如果你上传文件,最好在表单数据回发之外处理。
@Configurable
public class Filter1 extends OpenEntityManagerInViewFilter implements Filter{

    public void doFilterInternal(HttpServletRequest httpReq, HttpServletResponse httpResp, FilterChain chain)
        throws ServletException, IOException {
        //...
    }
}


@Configurable
public class Filter2 extends OncePerRequestFilter implements Filter{

    public void doFilterInternal(HttpServletRequest httpReq, HttpServletResponse httpResp, FilterChain chain)
        throws ServletException, IOException {
        //...
    }
}

@Order(/* very small integer */)
public class Filter3 extends OncePerRequestFilter {

}