よろずやIT
プログラミング

CORSとは?Web開発者が必ず一度はハマるエラーの正体

執筆・監修:よろずやIT編集部|編集方針を見る

結論:まずここだけ読めばOK

詳しい手順・原因は、この下で解説しています。

プログラミングのイラスト

CORSとは何の略か

CORSとは、「Cross-Origin Resource Sharing(クロスオリジン・リソース・シェアリング)」の略で、日本語では「オリジンをまたいだ、リソースの共有」といった意味になります。ブラウザが持つ、安全のための仕組みの1つです。

「オリジン」とは何か

CORSを理解する鍵となるのが「オリジン」という考え方です。オリジンとは、大まかに言うと「どのドメインの、どの通信方式・ポートで動いているか」という組み合わせのことです。例えば https://example.com と https://api.example.com は、見た目が似ていても、ブラウザにとっては別のオリジンとして扱われます。

なぜCORSエラーが起きるのか

ブラウザには、「あるサイト(オリジンA)を開いたまま、別のサイト(オリジンB)のデータへ、利用者に気づかれずに裏側で自由にアクセスする」ことを原則として禁止する、「同一オリジンポリシー」という安全のルールが備わっています。

しかし実際の開発では、正当な理由があって、異なるオリジン間でデータをやり取りしたい場面が数多くあります。そこで、アクセス先のサーバーが「このオリジンからのアクセスなら許可します」と、あらかじめ明示的に許可を出す仕組みが用意されました。これがCORSです。逆に言えば、アクセス先のサーバーがこの許可を出していない場合、ブラウザがアクセスをブロックし、コンソールにCORSエラーが表示されることになります。

「入館証を持たない来訪者」に例えると

CORSの仕組みは、オフィスビルの受付に例えるとイメージしやすくなります。

このように、「誰の代わりに立ち寄ったのか」をサーバー側があらかじめ確認する仕組みが、CORSの正体です。

CORSエラーを解決する基本的な考え方

CORSのエラーメッセージには、多くの場合「どのオリジンからのアクセスが拒否されたか」が表示されます。解決のためには、以下のような対応が必要です。

  1. アクセス先のサーバー側の設定で、許可するオリジンの一覧に、アクセス元のオリジンを追加する
  2. 開発中であれば、サーバー側の設定ファイルやフレームワークが提供するCORS設定機能を確認する
  3. 本番環境では、必要な相手先だけを許可し、無制限にすべてを許可する設定は避ける

覚えておきたいこと

CORSは、異なるオリジン間のデータのやり取りを、安全に制御するためのブラウザの仕組みです。エラーが出た際は「怪しい通信をブロックしてくれている」というブラウザの意図を踏まえた上で、アクセス先のサーバー側の許可設定を見直すことが解決への近道です。

あわせて読みたい:CSRF(クロスサイトリクエストフォージェリ)とは

PRWeb API設計実践入門──API仕様ファーストによるテスト駆動開発 [ 柴田 芳樹 ]

Web API設計実践入門──API仕様ファーストによるテスト駆動開発 [ 柴田 芳樹 ]

¥2,860

楽天で見る
SHAREXLINEはてブ

よくある質問

Q.CORSのエラーは、自分のパソコンの設定を直せば解決しますか?

A.いいえ。CORSはブラウザが、アクセス先のサーバーの設定に基づいて判断する仕組みのため、多くの場合、利用者側ではなく、データを提供しているサーバー側の設定を直す必要があります。

Q.CORSの制限自体をなくしてしまうことはできますか?

A.技術的には可能ですが、CORSは悪意あるサイトからの不正なアクセスを防ぐための安全装置でもあるため、安易に制限をすべて解除することはおすすめできません。必要な相手先だけを許可する設定が基本です。

関連記事

最新のIT関連書籍 トップ10

PR / 楽天市場の売れ筋ランキングを定期的に取得しています。価格は変動する場合があるため、購入前に各ストアでご確認ください。