CORSエラーをNetworkで切り分ける手順

入門 | 10分 で読める | 2026.07.10

公式ドキュメント

今回やること

CORSエラーは、Consoleに長い英文で表示されます。

CORSエラーでは、Consoleの文だけでなく、Networkで実際のリクエストとレスポンスヘッダーを見ます。

Step 1: ConsoleでCORSか確認する

Consoleに次のような文が出ていたら、CORSが関係しています。

Access to fetch at 'https://api.example.com' from origin 'https://app.example.com'
has been blocked by CORS policy

ここで見るのは、2つのURLです。

  • どのページから
  • どのAPIへ

オリジンが違う時、ブラウザはCORSのルールを確認します。

Step 2: Networkで該当リクエストを探す

DevToolsのNetworkを開き、Fetch/XHRに絞ります。

見る項目:

  • Request URL
  • Request Method
  • Status
  • Response Headers
  • Request Headers

Consoleだけでなく、Networkで該当通信がどう扱われているかを確認します。

Step 3: Originを見る

Request Headersに Origin が入っていることがあります。

Origin: https://app.example.com

これは、ブラウザが「このページからAPIへアクセスしようとしている」とサーバへ伝えるヘッダーです。

API側は、このOriginを許可するかどうか判断します。

Step 4: レスポンスヘッダーを見る

API側がCORSを許可する場合、レスポンスに次のようなヘッダーを返します。

Access-Control-Allow-Origin: https://app.example.com

認証Cookieなどを含む場合は、追加で次のような設定も関係します。

Access-Control-Allow-Credentials: true

ただし、credentials を使う場合に Access-Control-Allow-Origin: * は使えません。

Step 5: preflightを見る

POSTや独自ヘッダーを使う通信では、本番のリクエスト前に OPTIONS リクエストが送られることがあります。

これをpreflightと呼びます。

OPTIONS /api/users
POST /api/users

preflightが失敗すると、実際のPOSTが送られないことがあります。

Networkで OPTIONS が出ていないか確認します。

Step 6: よくある原因

症状よくある原因
CORS blockedAPI側でOriginを許可していない
preflight失敗OPTIONSに対応していない
Cookieが送られないcredentials設定不足
localhostだけ失敗許可Originにlocalhostがない
本番だけ失敗ドメイン設定が古い

フロントだけでは直せないことが多い

CORSは、基本的にAPI側が許可する仕組みです。

フロント側でURLを変えたり、modeを変えたりして無理に回避するものではありません。

必要な確認:

  • API側で許可Originを設定しているか
  • OPTIONSに応答しているか
  • 許可methodにPOSTなどが含まれるか
  • 許可headersに必要なヘッダーが含まれるか

注意: CORSを避けるために全Originを雑に許可すると、意図しないサイトからAPIを使われる可能性があります。

まとめ

CORSエラーでは、Consoleのエラー文、NetworkのRequest URL、Origin、preflight、レスポンスヘッダーを確認します。

「ブラウザが止めている」のか、「APIが落ちている」のか、「preflightで止まっている」のかを分けると、修正箇所が見えやすくなります。

次に読む記事

← 一覧に戻る
PR
PR
PR
PR