CORS
「Cross-Origin Resource Sharing」の略です。CORSを使用すると、Webページ上のスクリプトが、他のドメインからリソースを要求できます。ほとんどのWebブラウザーは、セキュリティ上の理由から、この種類の要求をデフォルトでブロックします。
Webページは、要求元がHTMLであれば、別のドメインからリソースを要求できます。たとえば、<head>セクションでは、CSSファイル、フォント、他のドメインにあるJSファイルなどのリソースを参照できます。Google Analyticsのスクリプト、jQueryライブラリ、別のサーバーでホストされているフォントなどがその例です。同様に、<body>では、CDNまたは他のドメインから画像を要求できます。HTML内のクロスオリジンリソース要求には、CORSの許可は必要ありません。
スクリプトまたはiframe要素がクロスオリジン要求を行う場合は、CORSが必要です。たとえば、ページの読み込み後に実行されるAJAXメソッドは、別のドメインからリソースを要求できません。CORSはこのブラウザーのデフォルト設定を上書きし、要求を通過させます。
CORSは、「アクセス制御」HTTPヘッダーを使用して実装されます。サーバー管理者は、Webページにアクセスしたときにクライアントのブラウザーへ送信されるレスポンスヘッダーを追加または変更できます。ApacheサーバーやIISサーバーに適用できるこれらの設定は、サイト固有にすることも、サーバー全体に適用することもできます。以下は、一般的な要求ヘッダーとレスポンスヘッダーです。
CORS要求ヘッダー:
- Origin
- Access-Control-Request-Method
- Access-Control-Request-Headers
CORSレスポンスヘッダー:
- Access-Control-Allow-Origin
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
CORSの例
techterms.com上のスクリプトがGETアクションを使用してsharpened.comからリソースを要求すると、次の要求ヘッダーを送信することがあります。
Origin: https://techterms.com
Access-Control-Request-Method: GET
要求を許可するため、sharpened.comは次のヘッダーを返すことがあります。
Access-Control-Allow-Origin: https://techterms.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Originには、特定のドメインまたはアスタリスク(*)を使用したワイルドカードを設定できます。ワイルドカード設定では、すべてのドメインからのクロスリソース要求が許可されるため、セキュリティ上のリスクになる可能性があります。Access-Control-Allow-Methodsには、PUT、POST、DELETEなどを設定できます。また、すべてのメソッドを許可するワイルドカード(*)設定も使用できます。
知識をテストする