【问题标题】:Django CSRF token error when Chrome developer tools is open打开 Chrome 开发人员工具时出现 Django CSRF 令牌错误
【发布时间】:2019-06-15 03:56:39
【问题描述】:

最近几天我在 Chrome 上遇到了一个非常奇怪的问题,我无法确定出了什么问题。本质上,当开发人员工具面板打开时, 提交表单时我会收到一致的 CSRF 错误。面板关闭时我没有收到错误消息。这使得调试某些事情几乎是不可能的。

据我所知,middlewareCSRF 令牌处理没有任何变化(我不是项目中唯一的开发人员,但我感觉检查了提交)。 Chrome 的版本是 71(12 月 4 日发布,早于这种情况开始发生),所以我怀疑它是特定于浏览器的。

我只是想知道是否有其他人经历过类似的事情?

Django 错误是:

Forbidden (403) CSRF verification failed.
Request aborted.
Reason given for failure: CSRF token missing or incorrect.

【问题讨论】:

  • 尝试清理浏览器数据和缓存。
  • 如果清理浏览器数据和缓存不起作用,您可以发布您的相关代码吗?可能是有点不对劲
  • 清除浏览器数据和缓存并不能解决问题。我不确定哪个代码是相关的,但我们正在寻找新的身份验证程序(在 django 之外)是否导致问题的线索。
  • 看起来它实际上是一个 python 包的最新升级,但还不确定是哪一个导致了问题。
  • Katharine,您是否能够识别/解决问题?

标签: django google-chrome django-csrf


【解决方案1】:

无论是否打开开发者工具,手动删除 crsf cookie 后,我都遇到了 google chrome 的问题。

对我来说问题出在 settings.py 中:

CSRF_COOKIE_SECURE = True

这使得它在开发中失败,因为浏览器只会通过 https 连接接受 cookie。所以将 CRSF_COOKIE_SECURE 设置为 false(默认)解决了我的问题。

相关文档部分:Django Docs

【讨论】:

    【解决方案2】:

    我也有同样的问题。 我在我的代码中这样做来解决它:我在 Chrome 和 Firefox 中测试它

    if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):
        SERVER_RUN = 'cloud'
        DEBUG = False
    else:
        SERVER_RUN ='local'
        DEBUG = True
        
    if SERVER_RUN !='local':
        SESSION_COOKIE_DOMAIN = '.mywebsite.com'
        CSRF_COOKIE_SECURE = True
        SESSION_COOKIE_SECURE = True
    else:
        CSRF_COOKIE_SECURE = False
        SESSION_COOKIE_SECURE = False
    

    【讨论】:

      猜你喜欢
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2019-12-23
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多