Javascript 成功请求后不久发生XMLHTTPRequest网络错误的原因是什么?
我有一个连接到Sentry的React前端,在过去的几周里,我收到了很多报告,完全随机(不同的用户和不同的设备),错误如下:Javascript 成功请求后不久发生XMLHTTPRequest网络错误的原因是什么?,javascript,xmlhttprequest,network-programming,Javascript,Xmlhttprequest,Network Programming,我有一个连接到Sentry的React前端,在过去的几周里,我收到了很多报告,完全随机(不同的用户和不同的设备),错误如下: Error: Network Error at createError(../node_modules/axios/lib/core/createError.js:17:15) at apply(../node_modules/axios/lib/adapters/xhr.js:80:14) at XMLHttpRequest.r(../node_module
Error: Network Error
at createError(../node_modules/axios/lib/core/createError.js:17:15)
at apply(../node_modules/axios/lib/adapters/xhr.js:80:14)
at XMLHttpRequest.r(../node_modules/@sentry/browser/esm/helpers.js:87:17)
它在堆栈跟踪中引用的Axios代码:
request.onerror = function handleError() {
// Real errors are hidden from us by the browser
// onerror should only fire if it's a network error
reject(createError('Network Error', config, null, request)); // Clean up request
request = null;
}; // Handle timeout
我不认为这与Axios有任何关系,因为这表明请求触发了onerror
事件处理程序,这是XMLHTTPRequest的一部分
更奇怪的是,我经常看到一个成功的API请求在同一个用户之前经过几分钟,然后由于这个错误而失败,然后在几秒钟后用户(大概)刷新时再次工作。当我检查后端(写在节点中)的日志时,我发现大约有一半的时间,我实际上看到请求被记录并通过,而另一半时间,没有迹象表明错误时间戳处的请求曾经发生过。因此,这让我推断,有时,当抛出网络错误时,请求从未到达我的服务器,有时,即使成功地从我的服务器发送回响应,它也会以某种方式在传输中丢失?我知道这与发生在应用程序层以下的错误有关,因此HTTP 500不会引发此错误
我不明白这怎么会发生。如果有丢失的数据包,TCP重新传输不应该导致重试吗?这不仅仅是一个一次性的错误,在过去的几周里已经发生了20多次
一些注意事项:
- 一些研究让我认为这与CORS飞行前的情况有关。响应中设置了以下标题:
- 在后端,“保持活动”设置为
true
- 服务器正在Heroku上运行
- 客户端位于多个不同设备上的多个不同网络上
关于a)为什么在成功的请求通过后几秒钟会发生这种情况,以及b)确定来源的方法,您有什么想法吗?或者这仅仅是一个通常会发生的完全正常的、短暂的错误?上述方面有什么好运气吗?我在本机windows中遇到此问题
'Access-Control-Allow-Origin': '*'
'Access-Control-Allow-Headers': 'X-Requested-With'