Open2

CORS

まるまる

https://www.youtube.com/watch?v=yBcnonX8Eak

  • 同一オリジン:スキーム(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を指示している。