CORSとは
- オリジン間リソース共有(Cross-Origin Resource Sharing)のこと
事前知識:オリジンとは
- スキーム(プロトコル)、ホスト、ポートから構成されるもの
https://example.com:443
大前提
- インターネットは危ない!
原則:同一オリジンポリシー
- ブラウザは、あるオリジンから配信されたリソースから他のオリジンに通信することを制限する
例外:scriptタグのsrc属性/imgタグのsrc属性/formタグのaction属性 など - この原則がないと、信用できないオリジンからのコンテンツを知らぬ間に受け入れてしまい大事な情報を盗まれる、などの危険性が増すことになる
そうは言ってもクロスオリジンで通信したいことはある
- 自分で開発したWebアプリ同士で通信させたい
- 信用できるオリジンが提供しているAPIを自分のWebアプリから利用したい
例)自治体が提供しているオープンデータなど
そこでCORS
- 「このオリジンから配信されたリソースからの呼び出しは許可するよ」と設定する
- '*'と設定するとどこからの呼び出しでもOK!という意味になる(太っ腹だし、強心臓!)
- APIキーを払い出すときに「どのオリジンから利用するか」を設定させるサービスもある
落とし穴
- CORSはブラウザでない場所からの呼び出しには無力
例)モバイルアプリ/デスクトップアプリ/APサーバ - 認証が絡むと複雑
オープンデータが一番使いやすい
CORSの使いどころ
- Web APIの提供:CORSを検討してもいい
最後に
- 実は、CORSは使わなくて済むならそれが一番いい
- 他に方法がない場合にのみ採用するのが吉