2011-08-05 5 views
3

私はHTTPとHTTPSの両方で動作するブログを持っており、csrfトークン検証に関する問題にぶつかっています。Django CSRF(HTTPとHTTPSの両方)

CSRFトークンは各フォームで使用できますが、HTTPバージョンのサイトでコメントをコミットしようとすると、次のエラーが発生します。 (403) CSRF検証に失敗しました。リクエストが中止されました。

リファラーチェックに失敗しました - http://mysite.com/blog/1/https://mysite.com/と一致しません。

HTTPS経由でブログを表示するとうまく動作します。

誰かが、両方を照合する方法を知っていますか?

答えて

1

私はそれを理解しました。私のfastcgiパラメータに問題がありました。

fastcgi_param HTTPSがオンになっています。

HTTPSを必要とする環境変数を設定しています。 Djangoは、この変数がオンになっているときにcsrfトークンをいくつか強制します。

+0

ウェブサーバーでサイトを実行していますか? lighttpdの下で実行している同じ問題があり、現時点で解決できません。 –

+0

どのように修正しましたか? fastcgi_paramを削除しましたか? request.is_secure()はそれがなければ正しく動作しません... – Soid

1

あなたは真の

にCSRF_COOKIE_SECUREパラメータを設定する場合、これはのようにセキュアなクッキーをマークし、非セキュア接続を介してそれを受け入れることからブラウザを防ぐ、つまり、HTTPで見るためにあなたの設定をチェックしたい場合があります。

これが問題の原因であるかどうかを確認するには、動作するビューを使用してFalseをアサートしてデバッグ画面を表示し、Csrfクッキーが送信されるかどうかを確認します。

+0

助けてくれてありがとう!私は間違いなくそれだと思っていましたが、実際には上記のように私がfastcgiパラメータで設定した環境変数と関係がありました。 – Dave

関連する問題