@ Vipul Panth имеет полезную информацию, но я хотел бы предоставить более подробную информацию.
Во-первых, обратите внимание, что navigator.sendBeacon
не поддерживается во всех браузерах. Подробнее об этой функции, а также поддерживаемых в настоящее время браузерах см. В разделе MDN documentation.
Вы действительно создаете blob для обеспечения заголовков. Вот пример:
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
отправит запрос POST с заголовком запроса Content-Type установлен на то, что в headers.type
. Это, кажется, единственный заголовок вы можете установить в маяк, хотя, на W3C:
Метод sendBeacon не дает возможность настроить метод запроса, предоставить пользовательские заголовки запросов, или изменить другие свойства обработки запроса и ответ. Приложения, для которых требуются нестандартные настройки для таких запросов, должны использовать API [FETCH] с флагом keepalive, установленным в true.
Я смог наблюдать некоторые из того, как это сработало через этот Chromium bug report.
Да, вы совершенно правы, поскольку это экспериментальный подход согласно [docs] (https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon) и доступен только в последнем браузере, таком как хром v39. –
Исправьте меня, если я ошибаюсь, но keepalive for fetch еще не реализован в Chrome. https://groups.google.com/a/chromium.org/forum/#!topic/loading-dev/_F6oicQ3_F4 –