我有多个django服务器(移动客户端的API后端)运行在负载平衡器后面。但是,当访问Django管理员有时我得到403禁止错误。它与csrf cookie有关吗?Django admin CSRF 403错误
我的负载均衡器设置,
会议粘性 - 无
算法 - ROUNDROBIN
我有多个django服务器(移动客户端的API后端)运行在负载平衡器后面。但是,当访问Django管理员有时我得到403禁止错误。它与csrf cookie有关吗?Django admin CSRF 403错误
我的负载均衡器设置,
会议粘性 - 无
算法 - ROUNDROBIN
我不能成像任何情况下,直到你在一个浏览器选项卡中完成所有的工作时,它的可能。当您请求表单(使用GET请求)时,您将生成csrf cookie(如果它尚不存在)并为此cookie生成csrfmiddlewaretoken
,作为响应,您将使csrf标记和cookie值处于一致状态。在POST请求中,您的浏览器发送它们并在服务器端进行比较。所以,这种行为不应该依赖于后端。但你总是可以用记录器测试你的假设。从文档:
CSRF故障记录为对django.security.csrf记录器的警告。
改变在Django 1.11:
在旧版本中,CSRF故障记录到django.request记录。
这是CSRF保护的重点,它依赖于后端。它将来自客户端cookie的令牌与存储在该特定后端的会话变量中的参考值进行比较。发送该请求到不同的后端,它应该失败。 – serg
我同意,如果您使用'CSRF_USE_SESSIONS = True'的Django 1.11。在其他情况下,不管后端为您生成csrfmiddlewaretoken,因为它只取决于发送的cookie值。当然,我认为所有的后端都有相同的源代码。 –
你能告诉我你是怎么做的吗?请 –
你需要打开会话粘贴或关闭CSRF。 – serg
你好,你最终解决这个问题吗?我有同样的问题 – psychok7