私は、タブウィンドウを閉じるときにPOSTリクエストを確実に行うコードを書くのに苦労しています。 Navigator.sendBeacon
はまさに私が必要とするようです(私はこれがGoogle Chromeのためにのみ必要です)。ウィンドウアンロードからのログ取得のためのPOSTリクエストを呼び出す
$(global).bind('unload', function() {
let body = {
UserEmail: appState.user.email,
Job: {
Id: appState.jobId
},
Timestamp: '/Date(' + new Date().getTime() + ')/',
EventOrigin: 'PdfReviewClient',
Event: 'JobClosed'
};
let headers = {
Authorization: `JWT ${authenticationState.token}`,
'Content-Type': 'application/json; charset=utf8'
};
let blob = new Blob([JSON.stringify(body)], headers);
navigator.sendBeacon(configuration.rootApiUrl + 'jobevents', blob);
});
私のビーコンにはカスタムヘッダーが含まれているため、私はBlobを作成しています。
ただし、この要求は発生していないようです。これは、ウィンドウが閉じられてから特にデバッグが難しいです。だから質問は、なぜ私のビーコンは送信されないのですか?
ブラウザの終了時にリクエストが行われていないことを確認したとしますか? – Jorg
@Jorgはい、あります。良い考え、点検ありがとう、しかし、この場合は問題ではありません。 –
アンロードそのものもトリガーですか? 'alert'を使ってウィンドウをブロックするかどうかを調べることができます。 – Jorg