[Unhandled promise rejection: TypeError: GETまたはHEADリクエストではボディは許可されていません] のエラーの原因と解決方法


このエラーの原因と解決方法について、以下の方法を紹介します。

  1. リクエストのメソッドをGETまたはHEADに設定する: エラーメッセージが示しているように、このエラーはGETリクエストやHEADリクエストでのみ発生します。Fetch APIを使用してリクエストを送信する前に、リクエストのメソッドを明示的にGETまたはHEADに設定してください。

    fetch(url, { method: 'GET' })
     .then(response => {
       // レスポンスの処理
     })
     .catch(error => {
       // エラーハンドリング
     });
  2. リクエストのボディを削除する: GETリクエストやHEADリクエストでは、リクエストのボディ(ペイロード)は不要です。Fetch APIのリクエストオプションからbodyを削除するか、空のオブジェクトに設定してください。

    fetch(url, { method: 'GET', body: {} })
     .then(response => {
       // レスポンスの処理
     })
     .catch(error => {
       // エラーハンドリング
     });
  3. リクエストのボディを必要とする場合は別のメソッドを使用する: もしリクエストにボディを含める必要がある場合は、GETやHEAD以外のHTTPメソッド(例: POST、PUT)を使用してください。これにより、ボディを含めたリクエストを送信することができます。

    fetch(url, { method: 'POST', body: JSON.stringify(data) })
     .then(response => {
       // レスポンスの処理
     })
     .catch(error => {
       // エラーハンドリング
     });