🙆
DjangoのCSRF_TRUSTED_ORIGINSの設定を開発環境で検証する
Djangoを3から4にしたら、開発環境ではすべてのテストも通ったのにCloudRunの環境では「CSRF検証に失敗したため、リクエストは中断されました。」というエラーが、、、
要約
-
python manage.py runserver
はhttp1.1 - Cloud Run は http3
- http1.1のときだけRequest headerに
Host: localhost:8000
が付与されていた - OriginとHostが一致しているとCSRF_TRUSTED_ORIGINSの確認なしでCSRF検証が通る
環境
- Python 3.9.16
- Django 4.2.1
- Chrome
検証方法
開発環境でもhttp3で通信できるように、とかも考えましたが楽だったのでHost書き換えました。
これ使ってHostを書き換えて検証しました。
さいごに
CSRF_TRUSTED_ORIGINS設定したらいいよ!はググればすぐ分かったんですが、開発環境で再現させたくて調べたので記事に残しました。
もっといい方法ありそうな気もする。
Discussion