0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CORSについて知る

Posted at

CORSとは

CORSとは、オリジン間リソース共有(Cross-Origin-Resource-Sharing)のことで、読み方は一般的に「コルス」。
コンテンツを読み取ることを許可しているオリジンを、サーバがクライアントに共有する機能。

オリジンとは、ホスト(ドメイン)やスキーム(プロトコル)、ポート番号のこと。
詳しくは下記から↓

そもそも、ウェブのセキュリティにおいて同一オリジンポリシーが存在し、あるオリジンから別のオリジンにアクセスできないよう制限されている。
詳しくは下記から↓

つまり、CORSとは、アクセス先のオリジンがアクセス元のオリジンに対して、アクセス許可を与える際に使われる。

注意点!

CORSはサーバ(バックエンド)での設定が必要!

CORSエラーが発生して解決策見つけるためにググると、
「HTTPヘッダーに設定すれば動くようになるよ」
という情報が散見される。
これを取り違え、クライアント側のリクエストヘッダーに設定しても期待通りに動くことはない。
前述した通り、CORS設定はサーバ側の問題であり、HTTPヘッダーというのは、レスポンスヘッダーのことであるからだ。

CORSはあくまで各ブラウザが勝手に対応しているだけ!

例えば、PostmanからCORS設定をしていない(=同一オリジンからのみアクセスを許可している)APIを叩いてみる。
この場合、リクエストは問題なく送れてしまう!
というのも、そもそもCORSは各ブラウザが勝手に対応しているものであるからだ。

つまり、ブラウザの仕様によってこの辺の動きが異なってくる(※1)し、CORS設定はAPIの脆弱性対策には大して効果がないことがわかる。

※1:CORSというかオリジンの話だが、IEでは同一オリジンの確認にポート番号を含まない、といった例が挙げられる。

参考

MDNの定義は目を通しておく価値あり

わかりやすい日本語の参考記事

英語に抵抗なければこちらも目を通したい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?