尝试通过SSH隧道登录Django Admin时出现403 CSRF错误

时间:2016-10-11 14:27:12

标签: django django-admin csrf django-csrf ssh-tunnel

我正在尝试通过另一台服务器(例如123.123.123.123)登录Django应用程序的管理面板。我有一个像ssh -L 3000:my.website.com:443 user@123.123.123.123那样的ssh隧道。然后我可以转到https://localhost:3000/admin/login/并查看在my.website.com上运行的服务器的Django管理员的登录页面。无论我输入什么凭据,都会导致HTTP 403&CSRFF验证失败。请求中止。错误页面。

直接转到my.website.com/admin/login/时,我不会收到此错误消息。哪些设置可能有助于允许通过SSH隧道登录?我已尝试将'localhost'添加到ALLOWED_HOSTS。 CSRF cookie是安全的(仅通过HTTPS提供,我一直使用)并设置了HTTPOnly标志。

1 个答案:

答案 0 :(得分:1)

Django会发现您正在尝试访问my.website.com域名,并会向您发送该域名的Cookie。

但您的浏览器实际上是访问localhost域名,因此my.website.com的Cookie不会对其有效,浏览器也不会将其发送回Django服务器。

解决此问题的一种方法是使用my.website.com/etc/hosts指向127.0.0.1,将您的隧道端口更改为443并改为连接到my.website.com

另一种方法是在你和你的django服务器之间设置任何服务器,它将把cookie和其他路径从一个域重写到另一个域。

相关问题