2
2

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 5 years have passed since last update.

CORS対応としてAPI側で対応しないといけないことメモ

Last updated at Posted at 2020-03-03

概要

CORS対応としてAPI側で対応しないといけないことのまとめ。

対応内容

OPTIONSメソッド

preflight対応としてOPTIONSメソッドを実装する必要がある。

HTTPレスポンスヘッダ

※値は全てAPIが許容するモノのみとする

  • Access-Control-Allow-Headers: Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token
  • Access-Control-Allow-Methods: DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT
  • Access-Control-Max-Age: 600 ※任意、例だと10分間
  • Access-Control-Allow-Origin: * ※クライアント側のFQDN

GET等各種メソッド

HTTPレスポンスヘッダ

※値は全てAPIが許容するモノのみとする

  • Access-Control-Allow-Origin: * ※クライアント側のFQDN
  • Access-Control-Expose-Headers: * ※クライアント側がヘッダとして取得可能なものを指定する
  • Access-Control-Allow-Credentials: true ※クッキーのやり取りが必要な場合

Access-Control-Allow-Credentials: trueの場合、Access-Control-Allow-OriginはワイルドカードではなくOriginを指定しなければならないので注意。※MDNのCORS説明 参照

実装

  • Originが想定と異なる場合、処理を継続しないようにする
    ※内部的には実際の処理が走ってしまっているとPOSTなどで悪戯可能になるため

注意点

シンプルなリクエスト*1 の場合、preflightは行われない為、preflight無しでも成立できるように必要あり。

*1 JavaScript無しで、ブラウザからの操作で可能なリクエストと等価なAPIコール、
※ 例:ただのGETリクエストや、フォーム送信(Content-Typeがapplication/x-www-form-urlencodedなPOST)等)
MDNのCORS説明シンプルな cross-site リクエスト 参照

参考

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?