画面離脱時にAPIに確実にリクエストを送りたい。

APIリクエストを送る方法

調査連絡

やりたいこと

  • ブラウザ:chrome イベント:unload, beforeunload
  • HTTPメソッド: DELETE
  • その他:認証情報をreauestHeaderに含める必要あり。

試したこと

普通に非同期でリクエスト送る

  • 画面更新のタイミングによっては、API callが間に合わないのでNG

    XML syncで同期的にリクエスト送る

  • Chrome80はunload, beforeunload時の同期通信を許可してないのでNG
  • Chrome80からunload時の sync XHR が許可されなくなる問題

    fetch keepaliveでリクエスト送る ->

  • Preflight Requestにkeepalive対応していないためNG。
  • POSTかつkeepaliveではPreflight Request送らず本通信することはできるが、
  • 認証情報含めるためにrequestHeaderの編集してしまうと、
  • 結局Preflight Request飛んでしまう。

    sendBeacon()を使う

  • requestHeaderがカスタムができず、
  • 認証情報が送れないのでNG。