django

Django – CSRF verification failed.

djangoを使ったサイト構築中に発生した不具合

Pythonのdjangoフレームワークを使って、動的サイトを構築していたときに発生した不具合についての紹介です。

今回発生したのは、下の図のエラー。CSRF検証が失敗したということらしいです。

HELP直下の文言から判断するに、ドメインがDjangoで許可したサイトと一致していないとのことです。

今回は、このOrigin Checking failed – 「あなたのドメイン」 doen not match any trusted origions. というエラーの解決方法について説明していきます。

発生した背景をもう少し詳しく書いていきますと

まずは、開発したWebサイトはAWS上で構築しました。アーキテクチャーは以下のように作成しました。左からユーザがロードバランサーを経由してWebサーバーへアクセスしWebページを表示する仕組みになります。ロードバランサーにはドメインとSSL証明書をアタッチしています。DBは訳がありRDSではなくRedshiftを採用しました。

簡単ではありますが、上のようなアーキテクチャーをもってWebサイトを構築していました。今回エラーが起きたのはWindows Server上で動作していたDjango上で起こりました

Djangoアプリ開発環境

  • Pycharm 2021.3.2
  • Python 3.9
  • Django 4.0.4

Pycharm上で開発していたとき( localhost )は発生せず、ロードバランサーHTTPSでアクセス(https://****.com)したときにエラーが発生しました。

エラーについては、settingファイルに対象のドメインからのアクセスを許可することで解決しました。

Origin Checking failed – 「あなたのドメイン」 doen not match any trusted origions.

trusted originを登録しないといけないということですね。

CSRF_TRUSTED_ORIGIONS = ['https://*****.com']

本日はここまでとなります。お役に立てましたら幸いです。