Open2
CORS
-
同一オリジン:スキーム(https),ホスト(www.example.com),ポート(443)全てが同じもの
-
もともとは、同一オリジンでの通信(リクエスト/レスポンス)をしていた。
-
別のエンドポイントへの通信もしたい!(APIサーバーへの通信)→できるようにする→悪意のあるサーバーからのリクエスト・レスポンスもできるようになってしまう。
-
CORSで保護する
-
保護するものは2点
1, プリフライトリクエスト(リクエスト送る前にリクしていいか許可を得る)
2, 返ってきたレスポンスをJSに渡していいか許可する -
プリフライトリクエスト=CSRF対策
-
ただしGET ,POST ,HEADメソッドは、従来サーバー側でCSRF対策がされている"はず"なので、プリフライトリクエストは省略される。
-
クッキーつきでリクエストを送る場合
-
(デフォルトでは異なるオリジンへのリクエストにはcookieはつかない)
-
やり方
1,リクエスト
XMLhttpRequest ()プロパティで、req.withCredentials = true;をつける。
2, レスポンス
JSがレスポンスを受け取れる条件を満たす。
- Access-Control-Allow-Originヘッダーはオリジンを明記している。*ワイルドカードは使えない
- Access-Control-Allow-Credentials:trueを指示している。