送信専用(そうしんせんよう)Ajax

クライアントサイドのログをサーバーに(おく)ったり、アナリティクスのデータを(おく)ったり(とう)でリクエストはするけどレスポンスは不要(ふよう)なAjaxを(おこな)いたいときがあります。
通常(つうじょう)のAjaxは()のJavascriptなら XMLHttpRequest だったり、ライブラリを使用(しよう)するなら jQuery.ajax()axios使(つか)うと(おも)いますが、 送信専用(そうしんせんよう)のAjaxならもっと簡単(かんたん)実装(じっそう)できるよという(はなし)

beacon

window.navigator オブジェクトに sendBeacon() という関数(かんすう)実装(じっそう)されており、これを使(つか)うことで簡単(かんたん)にAjax送信(そうしん)(おこな)えます。

navigator.sendBeacon('https://blare.fwhy.app/', {foo: 'FOO'});

注意点(ちゅういてん)としてはリクエストメソッドがPOST固定(こてい)となっていてGET(とう)変更(へんこう)はできなくなっています。

image

GETで(おく)りたい場合(ばあい)Image オブジェクトを使(つか)うことで実現(じつげん)できます。
Image オブジェクトはsrcプロパティを設定(せってい)したときにリクエストが送信(そうしん)されます。

(new Image()).src = 'https://blare.fwhy.app/?foo=FOO';

こちらも注意点(ちゅういてん)としては本来(ほんらい)画像用(がぞうよう)のものなのでリクエストヘッダーが画像(がぞう)前提(ぜんてい)のものとなっています。
(たと)えばAcceptヘッダーが image/avif,image/webp,*/* のようになります。

参考(さんこう)

Navigator.sendBeacon()
Image()