2016-10-11 9 views
0

Djangoアプリケーションの管理パネルに別のサーバー(たとえば123.123.123.123)でログインしようとしています。私はssh -L 3000:my.website.com:443 [email protected]のように開いているSSHトンネルを持っています。 https://localhost:3000/admin/login/にアクセスして、my.website.comで実行しているサーバーのDjango管理者のログインページを参照してください。どのような認証情報を入力しても、HTTP 403のCSRF検証に失敗します。 Request aborted.`エラーページ。403 SSHトンネル経由でDjango AdminにログインしようとするとCSRFエラーが発生する

my.website.com/admin/login/に直接行くと、このエラーは発生しません。 SSHトンネル経由でのログインを許可する設定にはどのようなものがありますか?私はすでに'localhost'ALLOWED_HOSTSを追加しようとしました。 CSRFクッキーは安全です(常に使用しているHTTPS経由でのみ利用可能です).HTTPOnlyフラグが設定されています。

答えて

1

Djangoはmy.website.comドメインにアクセスしようとしており、そのドメインのクッキーを送り返します。

あなたのブラウザは実際にはlocalhostドメインにアクセスしていますので、my.website.comのクッキーは有効ではなく、ブラウザはそれらをDjangoサーバに戻しません。

修正する方法の1つは、/etc/hostsを使用してmy.website.comを127.0.0.1に設定し、トンネルポートを443に変更し、my.website.comに接続します。

別のアプローチは、あなたとあなたのdjangoサーバの間に、あるドメインから別のドメインへのクッキーと他のパスを書き換えるサーバを設定することです。

+0

'/ etc/hosts /'に '127.0.0.1 my.website.com'を追加しました。完璧に働いた! –

関連する問題