CORS 【Cross-Origin Resource Sharing】 オリジン間リソース共有 / クロスオリジンリソース共有

概要

CORS(Cross-Origin Resource Sharing)とは、Webサーバに特殊なHTTPヘッダ項目を追加することで、送り出したWebページ上のスクリプトWebブラウザから別のサーバアクセスできるようにすること。

HTTP通信における「オリジン」(origin:データの送信元)とは、Webページや画像ファイルなどの所在を表すURLのうち、URIスキームhttp://かhttps://かの違い)、ホスト名Webサーバドメイン名)、ポート番号デフォルトではhttpTCP80番httpsTCP443番)の組み合わせのこと。

通常はWebページ上のスクリプトなどからは同一オリジンリソースのみアクセスできるという制限(SOPSame-Origin Policy/同一生成元ポリシー)が課されるが、Webサーバ側でCORSの指定を行うと、この原則を緩和して指定されたオリジンへのアクセスが許可される。複数のドメインにまたがって情報や機能を組み合わせたい場合に用いられる。

具体的には、WebサーバWebブラウザHTTP通信において、ヘッダに特殊な項目を付け加えることでアクセス許可の制御を行う。今、「https://a.example.jp/」上のスクリプトXMLHttpRequest等で「https://b.example.jp/」にアクセスしたい場合、Webブラウザから b.example.jp へのHTTPリクエストに「Origin: https://a.example.jp」(私はa.example.jpスクリプトです)というヘッダを追加する。

b.example.jp がアクセスを許可する場合は、対応するHTTPレスポンスで「Access-Control-Allow-Origin: https://a.example.jp」というヘッダを追加してデータを送信する。項目の値を「*」とすればすべてのオリジンからのアクセスを許可する。

実際には、このやり取りはいくつかの条件(メソッドGET/HEAD/POSTのみ、いくつかの特定のヘッダ項目やContent-Typeのみ使用可能等)を満たした場合に利用できる「単純リクエスト」と呼ばれる手順である。条件を満たさない場合には、実際のデータ送受信開始前にアクセス許諾の手続きを済ませる「プリフライトリクエスト」という手順を使用する。また、HTTP認証の資格情報を含むリクエストを処理する仕様も別に定められている。

(2021.5.17更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。