我有多個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