Обновлено 11 февраля
Работает веб-сайт ASP. NET MVC. На этом у нас есть одна страница с несколькими AJAX GET и одна пользовательская AJAX POST обратно на наш сервер. Для очень небольшого процента пользователей (но значительного числа) они получают «err_connection_reset» для своего POST. Похоже, что это происходит во многих браузерах и является недавним явлением.
Однако мы не можем продублировать это собственно с помощью любого браузера (используя клиентские машины по всему миру). У нас также есть буквально десятки тысяч пользователей, для которых это прекрасно работает.
Нам повезло, что у нас был один пользователь, который смог сообщить нам некоторые подробности из Chrome Инструментов разработчика:
a - Консоль показала ошибку для POST, которая просто заявляет "net :: ERR_CONNECTION_RESET"
b - Из записанного файла HAR мы можем увидеть детали этого события (некоторые данные заменены на ***):
{
"startedDateTime": "2020-02-07T19:09:32.786Z",
"time": 0.06441399999312125,
"request": {
"method": "POST",
"url": "http://****.*********.***/************/************",
"httpVersion": "",
"headers": [
{
"name": "Host",
"value": "****.*********.***"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Content-Length",
"value": "864"
},
{
"name": "Accept",
"value": "*/*"
},
{
"name": "X-Requested-With",
"value": "XMLHttpRequest"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Origin",
"value": "http://****.*********.***"
},
{
"name": "Referer",
"value": "http://****.*********.***/************?************"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate"
},
{
"name": "Accept-Language",
"value": "en-US,en;q=0.9"
},
{
"name": "Cookie",
"value": "************"
}
],
"queryString": [],
"cookies": [
{
"name": "************",
"value": "************",
"expires": null,
"httpOnly": true,
"secure": false
}
],
"headersSize": -1,
"bodySize": 864,
"postData": {
"mimeType": "application/json",
"text": "************"
}
},
"response": {
"status": 0,
"statusText": "",
"httpVersion": "",
"headers": [],
"cookies": [],
"content": {
"size": 0,
"mimeType": "x-unknown"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 0,
"_error": "net::ERR_CONNECTION_RESET"
},
"cache": {},
"timings": {
"blocked": 0.06441399999312125,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0,
"wait": 0,
"receive": 0,
"_blocked_queueing": -1
},
"serverIPAddress": "",
"_initiator": {
"type": "script",
"stack": {
"callFrames": [
{
"functionName": "send",
"scriptId": "301",
"url": "http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js",
"lineNumber": 1,
"columnNumber": 80265
},
{
"functionName": "ajax",
"scriptId": "301",
"url": "http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js",
"lineNumber": 1,
"columnNumber": 77117
},
{
"functionName": "n.ajax",
"scriptId": "303",
"url": "http://****.*********.***/bundles/************",
"lineNumber": 0,
"columnNumber": 2482
},
{
"functionName": "************.************",
"scriptId": "254",
"url": "http://****.*********.***/bundles/************",
"lineNumber": 0,
"columnNumber": 69415
},
{
"functionName": "************.************",
"scriptId": "254",
"url": "http://****.*********.***/bundles/************,
"lineNumber": 0,
"columnNumber": 67115
},
{
"functionName": "dispatch",
"scriptId": "301",
"url": "http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js",
"lineNumber": 1,
"columnNumber": 41771
},
{
"functionName": "y.handle",
"scriptId": "301",
"url": "http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js",
"lineNumber": 1,
"columnNumber": 39790
}
]
}
},
"_priority": "High",
"_resourceType": "xhr",
"pageref": "page_1"
}
Из раздела времени кажется, что этот вызов был заблокирован примерно на 64 микросекунды (вероятно, за другими вызовами AJAX), но он не смог поставить в очередь и никогда не был отправлено.
Я не вижу а) что может вызвать это и б) как глубже вникнуть в это. Любые предложения?
Обновление: 11 февраля
Анализируя файл HAR большего размера, я вижу, что он влияет только на POSTS, когда Content-Type равен "application / json».