Updated 11th Feb
Running an ASP.NET MVC website. On this, we have one page that has multiple AJAX GET and one user-initiated AJAX POST back to our server. For a very small percentage of users (but significant number), they're getting "err_connection_reset" for their POST. This seems to be happening across multiple browsers and appears to be a recent phenomenon.
However, we are unable to duplicate this in-house with any browser (using client machines across the globe). We also have literally tens of thousands of users for whom this works perfectly.
We were lucky enough to have one user who was able to give us some details from Chrome's Developer Tools:
a - the Console showed an error for the POST that simply states "net::ERR_CONNECTION_RESET"
b - From the recorded HAR file, we can see the details for this event (some data replaced with ***):
{
"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"
}
From the timings section, it seems that this call was blocked for about 64 microseconds (probably behind the other AJAX calls), but that it failed to queue and was never sent.
I'm not seeing a) what would cause this and b) how to dig deeper into this. Any suggestions?
Update: 11th Feb
On analysing a larger HAR file, I can see that it's only affecting POSTS where the Content-Type is "application/json".