我有一个长期运行的服务调用,我使用jQuery.ajax调用.该服务可能需要2分钟才能完成.
提交了AJAX请求,预计不会响应.一个单独的AJAX请求报告操作的进度.
在某些网站上,我们发现代理在2分钟后重新提交Ajax请求本身.浏览器是Chrome浏览器,但我怀疑它与Chrome有关.
这肯定不是我们重新提交ajax请求的情况.为了确保我们设置bool以防止在beforeSend事件中重新提交任何内容.
我正在处理这种重新提交的方式是在数据请求和服务测试中添加一个nonce,如果在执行操作之前已经提交了nonce.对此服务的任何第二次调用都会无害地返回,并且原始请求将继续进行.
请注意,我添加了一个无意义的服务,除了等待5分钟之外什么也没做,而且我没有经历过测试服务的问题(在生产站点上).
任何人都可以给我任何线索,导致这个ajax重新提交的原因,以及如何在本地复制它?
这是用于发送请求的js:
var sent = false;
var data = { ... }; // data is a very large object;
$.ajax("service.ashx?loc=area/subarea/", {
type: "POST",
data: data,
traditional: true,
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status === 0) {
// see http://stackoverflow.com/questions/3825581/does-an-http-status-code-of-0-have-any-meaning
} else {
ReportFailure(textStatus,errorThrown);
}
},
beforeSend: function () {
if (sent === true) {
return false;
}
sent = true;
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
这是从HTTP存档(HAR)请求的ajax,其中请求被重新提交并且它立即失败.注意2分钟的时间.
{
"startedDateTime": "2015-12-11T12:26:58.018Z",
"time": 120066.61499999973,
"request": { …Run Code Online (Sandbox Code Playgroud) 我们有一个 Azure Artifact 源,其上游源为https://registry.npmjs.org/。
通过这个 Azure Artifact 提要,我可以下载以下 npm 包:
但我无法下载相同软件包的以下版本:
如果我直接访问 npm(而不是通过工件提要),我可以按预期提取两个版本。
反正有没有进一步诊断这个问题?