クロスオリジンリソース共有とは?初心者でも理解できる徹底解説共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
クロスオリジンリソース共有とは?初心者でも理解できる徹底解説共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


クロスオリジンリソース共有とは?

ウェブブラウザには 同一オリジンポリシー というセキュリティの約束があります。これは一つのウェブサイトが別のドメインの情報を勝手に読み書きするのを制限するものです。

しかし実務では他のサイトのデータを取得したいケースが多いです。そこで現代のウェブではサーバーが適切な許可を返すことで クロスオリジンリソース共有 を可能にします。これを略して CORS と呼びます。

なぜ必要か

クロスオリジンリソース共有があると、別のサイトにあるデータを安全に利用できます。例えば天気情報のAPIや地図データ、SNSの投稿などを自分のサイトから表示したいときに役立ちます。ただし許可の設定を間違えると情報漏えいになる危険性があるため、慎重に運用することが大切です。

どう動くのか

クライアント側のブラウザが別のドメインへリクエストを送るとき、先にサーバーへ「このOriginからのリクエストを許可しますか」と確認する仕組みを プリフライト と呼びます。このときサーバーはレスポンスに特定のヘッダーを返します。

ヘッダー意味
Access-Control-Allow-Origin許可された Origin を伝えるhttps://example.com
Access-Control-Allow-Methods許可された HTTP メソッドGET POST
Access-Control-Allow-Headers許可されたヘッダーContent-Type
Access-Control-Allow-Credentialsクレデンシャルを許可するかtrue

このような設定が正しく揃えば、ブラウザはデータの取得を許可します。重要なのは Access-Control-Allow-Origin の値と Credentials の扱いです。

よくある間違いと注意点

・全てのサイトを一度に許可するためにヘッダーに "*" を使うのは危険です。特にクレデンシャルを使う場合は必ず特定の origin を指定します。

・サーバー側の設定だけでなく、クライアントのリクエストにも注意してください。プリフライトが多すぎるとアプリの挙動が遅くなることがあります。

実務でのちょっとした実例

あなたが自分のサイトから別の API にアクセスしたい場合、API 側のサーバー管理者が Access-Control-Allow-Origin ヘッダーを正しく返す必要があります。もしあなたが API を自分で管理している場合、以下のように設定します。

設定例説明備考
Origin: 自分のサイトの URLAccess-Control-Allow-Origin にその URL を返す複数 origins の場合はパターンに合わせて設定
Credentials 設定true に設定クレデンシャルを使う場合のみ

さらに、テストを行うときはブラウザのデベロッパーツールを使ってリクエストとレスポンスを確認しましょう。エラーメッセージは素直に原因を教えてくれます

まとめとして、クロスオリジンリソース共有はウェブ上のデータ連携を安全に進める重要な仕組みです。正しく理解し、必要な範囲で適切に設定しましょう。


クロスオリジンリソース共有の同意語

クロスオリジンリソース共有
正式名称。異なるオリジン間でリソースの読み込み・共有を許可・制御する仕組みのこと。ブラウザとサーバが適切なヘッダをやり取りしてアクセスを許可するか決定します。
オリジン間リソース共有
同義語として使われる表現。異なるオリジン間でリソースを共有できるようにする仕組みを指します。
クロスドメインリソース共有
“クロスドメイン”を用いた表現。ドメインが異なる場合でもリソースを共有する仕組みの意味です。
クロスオリジンアクセス制御
異なるオリジンからのアクセスを許可・制限する規則・仕組み。主にサーバのレスポンスヘッダを通じて制御します。
オリジン間アクセス制御
同様に、異なるオリジン間のアクセスをコントロールする機構のこと。
CORSポリシー
CORSの方針や規則の集まりを指します。どのオリジンがどのリソースへ、どのメソッドでアクセスできるかを定義します。
クロスオリジンリクエスト許可
異なるオリジンからのリクエストをサーバが許可するかどうかを決める機能。プリフライトリクエストやAccess-Control-Allow-*ヘッダで実現します。
Cross-Origin Resource Sharing
英語表記の正式名称。日本語の表現と同じ概念を指し、技術資料などで原語として使われることもあります。

クロスオリジンリソース共有の対義語・反対語

同一オリジンポリシー
ウェブブラウザが、ページと同じオリジン(スキーム・ホスト・ポートが同一)からのリソース取得のみを許可する基本的なセキュリティ方針。CORSの対義語的な考え方としてよく使われます。
同一オリジンのみ許可
同じオリジンからのリソース取得のみを許可する運用方針。外部ドメインからのリクエストを基本的に遮断します。
クロスオリジン拒否
外部オリジンからのリソース共有を明示的に拒否する設定・挙動のこと。
クロスオリジン全面禁止
外部オリジンからのすべてのリソース共有を禁止する、極めて厳格なポリシー。
CORSなし(非対応)
サーバが Access-Control-Allow-Origin ヘッダを返さず、クロスオリジン共有を許可しない状態。
同一-originポリシー必須設計
ウェブアプリの設計方針として、同一オリジンを前提にリソースを扱う構成。
オリジン間共有の回避設計
クロスオリジン通信を避けるためのアーキテクチャ選択・設計思想。
オリジン間共有を禁止するポリシー
組織やアプリが外部ドメインとのリソース共有を認めない方針。
外部オリジン受け入れを前提としない設計
外部ドメインからのリソース読み込みを前提とせず、同一オリジン内で完結する構成を取る考え。

クロスオリジンリソース共有の共起語

同一オリジンポリシー
ブラウザが異なるオリジン間のリソース共有を原則禁止するセキュリティルール。CORSはこのポリシーを柔軟にする仕組みです。
プリフライトリクエスト
サーバーに許可を事前確認するための特殊なHTTPリクエスト。許可されるメソッドやヘッダーを事前に問い合わせます。
シンプルリクエスト
プリフライトを必要としない、比較的制限の少ないクロスオリジンリクエストのこと。
Originヘッダー
リクエスト元のオリジンを示すHTTPヘッダー。サーバーが許可を判断する材料になります。
Access-Control-Allow-Origin
サーバーが応答で許可するオリジンを指定するレスポンスヘッダー。
Access-Control-Allow-Methods
サーバーが許可するHTTPメソッドを指定するレスポンスヘッダー(例:GET, POST, PUT)。
Access-Control-Allow-Headers
サーバーが受け入れるリクエストヘッダーを指定するレスポンスヘッダー。
Access-Control-Max-Age
プリフライトリクエストの結果をキャッシュする時間を秒単位で指定します。
Access-Control-Allow-Credentials
クレデンシャル( cookies や認証情報 )のクロスオリジン送信を許可するかを指定します。
Access-Control-Expose-Headers
ブラウザのJavaScriptから参照できるレスポンスヘッダーを指定します。
ワイルドカード
Access-Control-Allow-Origin に '*' を使って全てのオリジンを許可する設定のこと。
クレデンシャル
クッキーや認証情報などの資格情報をクロスオリジンで送受信すること。
サーバーサイド設定
サーバー側で正しいCORSヘッダーを設定して許可範囲を決める作業。
フロントエンド
ブラウザ上のコード(JavaScriptなど)からクロスオリジンリクエストを送る側のこと。
バックエンド
リクエストを受け取り、CORSヘッダーを返すサーバー側の処理。
ブラウザ
クライアント側のウェブブラウザ。CORSの適用対象となる主体。
HTTPヘッダー
リクエスト・レスポンスに付随するメタ情報。CORSではOriginやAccess-Control-*が重要。
セキュリティポリシー
クロスオリジン通信を制御する方針。設定次第でどのオリジンを許可するかが決まる。
実リクエスト
プリフライトを経た後に送信される、実際のHTTPリクエストのこと。
レスポンスヘッダー
サーバーが返すヘッダー群。CORS関連ではAccess-Control-*が含まれます。

クロスオリジンリソース共有の関連用語

クロスオリジンリソース共有
異なるオリジン間でリソースの取得を許可する仕組み。サーバー側が適切なヘッダを返すことで、ブラウザが安全にデータを共有できるようになります。
同一オリジンポリシー
ブラウザが、同一のオリジンからのみデータを自由に読み書きできるようにする基本的なセキュリティ制限です。
オリジン
スキーム(http/https)+ホスト名+ポート番号の組み合わせを指します。
プリフライトリクエスト
非シンプルなリクエストを送る前に、サーバーが許可するメソッド・ヘッダを確認するための OPTIONS リクエストです。
シンプルリクエスト
GET/HEAD/POST のうち、特定の条件を満たす場合にプリフライトを省略できるリクエストのこと。
Access-Control-Allow-Origin
サーバーが許可するオリジンを知らせるレスポンスヘッダ。ワイルドカード '*' の場合、認証情報を伴うリクエストには使用できません。
Access-Control-Allow-Methods
プリフライトリクエスト時に許可するHTTPメソッドの一覧を返すヘッダです。
Access-Control-Allow-Headers
プリフライトリクエスト時に許可するヘッダの一覧を返すヘッダです。
Access-Control-Allow-Credentials
認証情報(クッキー・認証ヘッダなど)の送信をクロスオリジンで許可するかを示します。
Access-Control-Expose-Headers
クライアント側から参照できるレスポンスヘッダの一覧を示します。
Access-Control-Max-Age
プリフライトの結果をキャッシュできる秒数を指定するヘッダです。
Access-Control-Request-Method
プリフライトリクエストで実際に使う予定のメソッド名を示すヘッダです。
Access-Control-Request-Headers
プリフライトリクエストで実際に使う予定のヘッダ名を列挙するヘッダです。
ワイルドカードオリジン
Access-Control-Allow-Origin に '*' を設定して全てのオリジンを許可する設定です。ただし資格情報を伴う場合は利用できません。
Vary-Origin
レスポンスを Origin に応じて変えることを示すための Vary ヘッダ。キャッシュの正確性を保つために重要です。
クレデンシャル付きリクエスト
クッキーや HTTP 認証情報を含むリクエストのこと。適切なヘッダ設定が必要です。
withCredentials
Fetch API や XHR でクレデンシャルを送信するかどうかを指定する設定です。
Credentialsモード
Fetch API の credentials オプションの値には include / same-origin / omit があり、クロスオリジンでの認証情報の扱いを決めます。
オリジン間リソース共有のセキュリティリスク
設定ミスにより機密データの露出や CSRF 的リスクが高まる可能性があるため、慎重な運用が求められます。
オリジン間リソース共有の誤設定
特定の Origin を厳密に許可すべき場面でワイルドカードを使う、Credentials を許可するのに '*' を使う等の誤設定を指します。
不透明なレスポンス
クロスオリジンのリクエストに対して、レスポンス本文が読み取れない“opaque”な結果になる状態を指します。
不透明なリダイレクト
クロスオリジンのリダイレクト時に、最終レスポンスが読み取れず不透明になる場合があります。
プリフライトレスポンス
OPTIONS リクエストに対するサーバーの応答。ここで Access-Control-Allow-* ヘッダが返されます。
シンプルリクエストの条件
Content-Type が application/x-www-form-urlencoded、multipart/form-data、text/plain のいずれか、または特定のシンプルヘッダのみを使う場合に適用されます。
サーバーサイド設定
CORS ヘッダをサーバー側で設定すること。Nginx、Apache、Express などの実装例が含まれます。
実装ベストプラクティス
最小限のオリジンのみを許可、Credentials の扱いを慎重に、プリフライトを過剰に発生させない設計、適切なキャッシュを使う等の実践事項です。
CORSミドルウェア
Express などの枠組みで CORS ヘッダを簡単に設定できるライブラリ・機能の総称です。
CORSプロキシ
CORS の制約を回避する目的で用いられる中継サーバーのこと。通常は推奨されず、回避策として理解されます。

クロスオリジンリソース共有のおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
16269viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2768viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1161viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1157viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
1036viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
1001viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
997viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
972viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
865viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
863viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
803viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
802viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
762viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
719viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
703viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
655viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
601viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
601viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
594viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
534viws

新着記事

インターネット・コンピュータの関連記事