CORSとは

要約

CORSはサーバからもらったスクリプトをブラウザ側で実行して、同じオリジンではない、別のオリジンのサーバに対してアクセスできる仕組み。

概念のみ以下説明

ブラウザとサーバの仕組み

インターネットを使って、ChromeFirefoxなどのWebブラウザを立ち上げて、何かしら検索すると、画面に文章、画像、動画などのデータが表示されます。ブラウザにデータを表示するには、データを保管しているサーバにアクセスする必要があります。サーバーから受け取ったデータの種類は動画、画像などもありますが、HTML、CSSJavaScriptといったブラウザ上の画面を構成するためのスクリプトもサーバ側から受け取ります。

セキュリティの話

JavaScriptはブラウザ上で実行して、HTTPリクエストできる仕組みを持っています。そのため、悪意のあるサーバにアクセスして、そこから受け取った不正なJavaScriptをブラウザで実行され、被害を受けることがあります。例えば、ブラウザにはセッション情報というパスワードやユーザー情報を保存する仕組みがあり、そのセッション情報を抜き取られて不正ログインするなどがあります。 このような脆弱性を防ぐために受信したオリジンとは別のオリジンへのアクセスができないようになっています。

オリジンとは、「RFC 6454 - The Web Origin Concept」(IPAによる日本語訳)で定められた概念で、端的にいうとリソース自身のURLの「スキーム」「ホスト」「ポート」の3つの組み合わせを「オリジン」と呼びます。 f:id:kawad189:20211209144943p:plain

でもアクセスできるようにしたい

CORSは別のオリジンにもアクセスできるように、サーバ側で許可する仕組みです。レスポンスにリソースの共有を許可するためのヘッダーを追加すると実現できる。