XMLHttpRequest.send() が失敗することがあります。Chrome のネットワーク パネルから、ステータスが 0 になっています。以下の .har ファイルを参照してください。send() を実行するコードは 99% を超える確率で成功しますが、まれに (~ 1/300) 0 を返します。
私の質問は、どうすればこれをキャッチできますか? それをキャッチするコールバックはありますか?
現在、onload と onerror を使用しています。
var xhr = new XMLHttpRequest();
xhr.onload = function(){};
xhr.onerror = function(){};
どちらも呼び出されていないため、静かに失敗しています。その他の注意事項:
- サーバーログにリクエストの証拠がありません
- Chrome のコンソールにエラー メッセージが表示されない
- サーバーはグーグルアプリエンジン
.har ファイルの出力は次のとおりです。##=編集済み。
{
"startedDateTime": "2013-03-30T23:52:20.972Z",
"time": 97,
"request": {
"method": "GET",
"url": "https://www.#######.com/project/auth_upload?to_sign=PUT%0A%0A%0A%0Ax-amz-date%3ASat%2C%2030%20Mar%202013%2023%3A52%3A20%20GMT%0A/s3.#####.com/######.mp4%3FpartNumber%3D50%26uploadId%3D#################.w--&asset_id=#############&project_id=###########",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Referer",
"value": "https://www.######.com/console/###########"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22"
}
],
"queryString": [
{
"name": "to_sign",
"value": "PUT%0A%0A%0A%0Ax-amz-date%3ASat%2C%2030%20Mar%202013%2023%3A52%3A20%20GMT%0A/s3.#######.com/############.mp4%3FpartNumber%3D50%26uploadId%3D##############"
},
{
"name": "asset_id",
"value": "###########"
},
{
"name": "project_id",
"value": "###############"
}
],
"cookies": [],
"headersSize": 595,
"bodySize": 0
},
"response": {
"status": 0,
"statusText": "",
"httpVersion": "HTTP/1.1",
"headers": [],
"cookies": [],
"content": {
"size": 0,
"compression": 0
},
"redirectURL": "",
"headersSize": 13,
"bodySize": 0
},
"cache": {},
"timings": {
"blocked": 0,
"dns": -1,
"connect": -1,
"send": -1,
"wait": -1,
"receive": null,
"ssl": -1
}
}
ありがとう、
トム