4

HTTP と HTTPS の両方の背後で実行されるブログがあり、csrf トークンの検証で問題が発生しています。

CSRF トークンは各フォームで利用できるはずですが、サイトの HTTP バージョンでコメントをコミットしようとすると、次のエラーが表示されます。

禁止 (403) CSRF 検証に失敗しました。リクエストは中止されました。

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

HTTPS 経由でブログを表示する場合は問題なく動作します。

検証を両方に一致させる方法を知っている人はいますか?

4

2 に答える 2

1

私はそれを考え出した。それは私のfastcgiパラメータの問題でした

fastcgi_param HTTPS オン;

HTTPS をオンにする必要がある環境変数を設定します。この変数がオンの場合、Django は csrf トークンに対して追加の強制を行います。

于 2011-08-08T17:32:35.697 に答える
1

CSRF_COOKIE_SECURE パラメーターを True に設定しているかどうかを確認するために、設定を確認することをお勧めします。

これにより、Cookie が安全であるとマークされ、ブラウザーが安全でない接続 (HTTP) 経由で Cookie を受け入れないようにします。

これが問題の原因であるかどうかを確認するには、機能する任意のビューを使用し、アサート False をドロップしてデバッグ画面を取得し、Csrf Cookie が送信されているか、またはニットされているかを確認します。

于 2011-08-06T06:48:50.010 に答える