【问题标题】:django posts receive CSRF verification failed after switching to load balancerdjango 帖子在切换到负载均衡器后收到 CSRF 验证失败
【发布时间】: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


【解决方案1】:

我一定有一个不新鲜的饼干。当我进入 Chrome 隐身模式时,一切正常,响应为 200。

【讨论】:

    【解决方案2】:

    禁止 (403) CSRF 验证失败。请求中止。

    您看到此消息是因为此站点在提交表单时需要 CSRF cookie。出于安全原因需要此 cookie,以确保您的浏览器不被第三方劫持。

    如果您已将浏览器配置为禁用 cookie,请重新启用它们,至少对于本网站或“同源”请求。

    更多信息可通过 DEBUG=True 获得。

    【讨论】:

      猜你喜欢
      • 2019-03-03
      • 2016-04-01
      • 2022-01-23
      • 2014-11-16
      • 1970-01-01
      • 2021-12-07
      • 2012-09-08
      • 2015-06-02
      • 1970-01-01
      相关资源
      最近更新 更多