はじめに
この投稿はメモ的なものです。
実装コードは出てきません。
先に結論
題名通り。
backendとfrontendを別ドメインで構築することを想定した場合(だけじゃないけども)、CROSの設定+HTTPメソッドのOPTIONSを提供しなければAPIコールに失敗する。
理由はここ
https://developer.mozilla.org/ja/docs/Web/HTTP/CORS#Functional_overview
背景など
- backendはDjangoのRest framework
- frontendはVue+axios
- backendとfrontendは別ドメイン
- 開発環境的には、backendはDockerコンテナ、frontendはホスト
- CROS設定は以下のようなところを参考にとりあえず全ブッコ
発生した現象
- CROSオリジンのエラーが発生
ハマりどころ
- 同一ドメインの場合は、OPTIONSを提供しなくてもAPIコールが成功する
- 少なくともchromeでは
- 正しくOPTIONSを提供できていない(Django内でOPTIONS実行エラーになる)場合でも、Django上ではそのようなエラーは出ない
- chromeでもOPTIONSは成功し、CROSオリジンでエラーした旨のログが出ていた
〆
設定をググるのも良いが、ドキュメントも大事
CROS設定してもうまくいかない人はここら辺も確認してみるのも良いかもしれません