【发布时间】:2018-07-06 05:21:12
【问题描述】:
我有一个有效的登录模板,它可以发布一个帖子,看起来像:
<form action="" method="post">
{% csrf_token %}
<br>
{{form.email}}
<div class="text-center">
<button type="submit">Login</i></button>
</div>
</form>
我的 SSL 设置如下所示:
ssl
SECURE_SSL_REDIRECT = False
SECURE_HSTS_SECONDS = 3600
SESSION_COOKIE_SECURE = False
SECURE_PROXY_SSL_HEADER = None
CSRF_COOKIE_SECURE = False
我做了两个改变。我切换到 aws ec2 弹性负载均衡器并从 https 切换到 http。
现在我收到一个错误:
禁止 (403) CSRF 验证失败。请求中止。
您看到此消息是因为此站点需要 CSRF cookie 提交表格时。出于安全原因需要此 cookie, 以确保您的浏览器不会被第三方劫持。
如果您已将浏览器配置为禁用 cookie,请 重新启用它们,至少对于这个站点,或者对于“同源”请求。
有人知道为什么会这样吗?
【问题讨论】:
-
检查您为网站存储的 cookie 以及您在 POST 时在 CSRF 字段中写入的内容。
-
EC2 实例是否共享一个数据库?如果不是,并且如果会话是在一个数据库中创建但由另一个数据库提供服务,则该会话将与 CSRF 令牌不匹配,您将获得 403'd
标签: django cookies load-balancing csrf elastic-load-balancer