N S*_*arj 19 javascript ajax jquery google-chrome
我有一个jQuery客户端向Spring Controller发出Ajax发布请求.在服务器端,未记录任何错误.在客户端,请求将持续很长时间(分钟),然后可能会因ERR_SPDY_PROTOCOL_ERROR或ERR_CONNECTION_CLOSED而失败.
此问题在Chrome上可重现,但在Firefox上不可重现.已验证的受影响的版本是70.0.3538.77,也可能有其他版本.此外,问题发生在应用程序的特定部署上,而不是其他地方,开发或生产.
客户端在该环境上发送HTTPS 2请求.在开发环境中,它是HTTP 1.1.在服务器上,所有请求都记录为1.1.
没有明显的原因,请求开始通过,但这是一个反复出现的问题,并希望解决它.由于问题开始发生,我无法重现它并检查问题是否与服务器连接太多(超过6个).我使用三台DNS服务器,其中最后一台是Google的8.8.8.8.
我正在寻找代码修复或提示是否这可能与服务器设置有关.我几乎可以肯定它是客户端代码和网络的组合.
问题不在于:
预测服务相关(JQuery在Chrome中停止和挂起的ajax请求) - 关于代理和连接的评论似乎更相关.
广告拦截器扩展程序/插件(无法在Chrome下加载资源)
我尝试过的失败了:
什么不回答这个问题:
在客户端,我已经尝试清除浏览器数据,刷新套接字和隐私浏览/隐身.
有时,很少会绕过错误的唯一事情就是隐身和刷新套接字并从chrome:// net-internals /#events中清空缓存
var formData = new FormData();
formData.append( /* ... */ );
//...
$.ajax({
type: "POST",
url: "/somepath/update",
cache: false,
data: formData,
contentType: false,
processData: false,
success: function(result) {
//...
},
fail: function(result) {
//....
},
error: function( jqXHR, textStatus, errorThrown ){
alert(textStatus + ":" + errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
使用$ .post的单独请求正在通过:
$.post("someotherpath/update", $("#someForm").serialize())
.done(function (data) {
//...
})
.fail(function (data) {
//...
})
.always(function () {
//...
});
Run Code Online (Sandbox Code Playgroud)
服务器端:
@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();
}
Run Code Online (Sandbox Code Playgroud)
如果相关,则有以下过滤器.我恐怕此刻不能发布更多内容:
@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 {
}
Run Code Online (Sandbox Code Playgroud)
预期的结果是代码应该通过成功回调.相反,请求会暂停等待几分钟,然后输入错误回调.
| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |