@Vipul Panth hat hilfreiche Informationen, aber ich wollte ein paar vollständigere Informationen zur Verfügung zu stellen.
Beachten Sie zunächst, dass navigator.sendBeacon
nicht in allen Browsern unterstützt wird. Weitere Informationen zu dieser Funktion sowie den derzeit unterstützten Browsern finden Sie unter MDN documentation.
Sie erstellen in der Tat ein Blob-Header zur Verfügung zu stellen. Hier ein Beispiel:
window.onunload = function() {
let body = {
id,
email
};
let headers = {
type: 'application/json'
};
let blob = new Blob([JSON.stringify(body)], headers);
navigator.sendBeacon('url', blob);
});
navigator.sendBeacon
wird eine POST-Anforderung mit den Content-Type-Request-Header senden auf, was auch immer in headers.type
ist. Dies scheint der einzige Header zu sein, das Sie allerdings in einem Beacon gesetzt, pro W3C:
Die sendBeacon Methode Fähigkeit nicht bieten die Anforderungsmethode, bieten kundenspezifische Anforderungsheader oder ändern andere Verarbeitungseigenschaften der Anforderung anpassen und Antwort. Anwendungen, die nicht standardmäßige Einstellungen für solche Anforderungen erfordern, sollten die API [FETCH] mit dem keepalive-Flag true verwenden.
konnte ich einige beobachten, wie dies durch diese Chromium bug report gearbeitet.
Ja, Sie sind völlig korrekt, da dies ein experimenteller Ansatz gemäß [docs] (https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon) ist und nur im neuesten Browser wie Chrom V39. –
Korrigieren Sie mich, wenn ich falsch liege, aber Keepalive für Fetch ist noch nicht einmal in Chrome implementiert. https://groups.google.com/a/chromium.org/forum/#!topic/loading-dev/_F6oicQ3_F4 –