用語解説

CORSとは?別ドメインへのアクセス制御の仕組みをやさしく解説

別のドメインのAPIを呼んだら通信がブロックされた。そんな経験の背景にあるのがCORSです。ブラウザの安全のための仕組みで、別オリジンへのアクセスを制御します。なぜ止まるのか、どう許可するのかを基礎からやさしく整理します。

CORSとは

CORSはCross-Origin Resource Sharingの略で、あるオリジン(ドメイン・プロトコル・ポートの組み合わせ)から別のオリジンのリソースへアクセスする際の許可ルールを定めた仕組みです。

ブラウザは安全のため、原則として別オリジンへのスクリプトからの通信を制限します。CORSは、その制限をサーバー側が明示的に緩める手段だと理解するとわかりやすくなります。

同一オリジンポリシーとの関係

CORSを理解する前提として、同一オリジンポリシーがあります。これは、ページが読み込まれたオリジンと異なるオリジンのリソースへ、スクリプトが勝手にアクセスできないようにする基本ルールです。

この制限がないと、悪意のあるサイトが利用者の情報を別サイトから引き出せてしまう恐れがあります。CORSは、この安全網を保ちつつ、必要な通信だけを許可するための仕組みです。

実務ではどこで関係する?

CORSは言葉の意味だけ覚えても、HTML共有の判断にはつながりません。実務では「表示に関係する話か」「検索に関係する話か」「アクセス制限に関係する話か」を分けて考えると整理しやすくなります。

CORSについて迷ったら、相手が安全に開けるか、検索に出してよいか、ブラウザや環境差で壊れないかを順番に確認します。用語理解は、その判断を早くするための道具として使います。手順が決まったら、HTML/ZIPをアップロードして共有URLを発行し、相手に確認してほしい観点と期限を添えて送ります。

  • 表示の話: HTML/CSS/JS、パス、ブラウザ互換性を確認する
  • 検索の話: noindex、canonical、sitemap、robots.txtの役割を分ける
  • 制限の話: URL共有、パスワード、メール認証、会社ドメイン認証を混同しない
  • 運用の話: 期限、差し替え、削除、共有メッセージまで決める

通信が許可される流れ

別オリジンへのリクエストが許可されるかどうかは、サーバーが返すヘッダーによって決まります。おおまかな流れは次の通りです。

  1. ブラウザが別オリジンへリクエストを送る際、自分のオリジン情報を付与する
  2. 場合によっては事前確認(プリフライト)のリクエストを先に送る
  3. サーバーが許可するオリジンやメソッドをレスポンスヘッダーで返す
  4. ブラウザがその許可内容を確認し、問題なければ本来のレスポンスを使えるようにする

プリフライトリクエスト

特定のメソッドやヘッダーを使う通信では、本番のリクエストの前に、許可されているかを確認するためのリクエストが自動で送られます。これをプリフライトと呼びます。

プリフライトでサーバーが適切な許可を返さないと、本番の通信は実行されません。CORSエラーの調査では、このやり取りを確認すると原因が見えやすくなります。

CORSエラーへの向き合い方

CORSエラーはフロントエンド側のコードだけでは解決できないことが多く、許可を返すのは通信先のサーバー側です。そのため、アクセスを許可してもらえるかをサーバー側の設定で対応する必要があります。

また、CORSはあくまでブラウザ上の制御であり、認証や認可とは別物です。アクセス制御はサーバー側でも別途しっかり行う必要がある点に注意しましょう。

再現するページを共有して相談するには

CORSエラーは環境によって挙動が変わることがあり、実際に開いて確かめてもらうと相談がスムーズです。問題を再現する最小限のページを関係者に見てもらうと、原因の切り分けが進みます。

再現用のHTMLを一時的に共有したいときは、ギガサイト便のようにドロップで認証付きの一時URLを発行できるサービスを使うと、関係者だけに見せながら相談できます。

よくある質問

オリジンとは何を指しますか?

プロトコル(httpsなど)、ドメイン、ポート番号の組み合わせを指します。このいずれかが異なると別オリジンとみなされます。

CORSエラーはフロントエンドだけで直せますか?

多くの場合、許可を返すのは通信先のサーバーです。サーバー側で適切な許可ヘッダーを返す設定が必要になることが一般的です。

プリフライトリクエストはなぜ送られますか?

特定の条件を満たす通信について、本番のリクエスト前に許可状況を確認するために、ブラウザが自動で送ります。

CORSはセキュリティ対策になりますか?

CORSはブラウザ上での通信制御であり、それ自体が認証や認可の代わりにはなりません。アクセス制御はサーバー側で別途行う必要があります。

実務ではどこで関係する?はHTML共有で必ず理解しておく必要がありますか?

細かな仕様を暗記する必要はありません。ただし、検索に出るか、閲覧者を制限できるか、表示が崩れないかに関わる用語は、共有前の判断材料として押さえておくと安全です。

関連記事

用語解説

同一オリジンポリシーとは?ブラウザの安全の基本ルール

あるサイトが別サイトの中身を勝手に読み取れないのは、ブラウザに組み込まれた同一オリジンポリシーの働きによるものです。スキーム・ホスト・ポートの三要素からオリジンを判断する基準を、具体例を交えて整理します。

5分で読める
用語解説

CORSとは?別ドメインのデータを読み込む際のルール

別ドメインのAPIを呼んだらエラーで止まった経験はありませんか。そのエラーの正体であるCORSとは何か、ブラウザがなぜ制限をかけ、サーバー側でどう許可を伝えるのかを、対処法とセットで分かりやすく説明します。

5分で読める
用語解説

Flexboxとは?要素を横並び・縦並びに整えるCSSの基礎

ボタンやメニューを横に並べたいのにうまくいかないと感じているCSSの初心者へ。Flexboxの考え方と主要なプロパティの使い方を、縦・横の整列が思い通りになるよう基礎からシンプルに説明します。

4分で読める
用語解説

CSSセレクタとは?要素を狙ってスタイルを当てる基礎

狙った要素だけにスタイルを当てたいCSSの初学者へ。タグ・クラス・IDをどう書き分けるか、複数条件を組み合わせる方法、詳細度で優先順位が決まる仕組みを、実装でつまずかないよう基礎から順に解説します。

5分で読める
「用語解説」の記事をもっと見る →