2017-11-11 212 views
1

我有多個django服務器(移動客戶端的API後端)運行在負載平衡器後面。但是,當訪問Django管理員有時我得到403禁止錯誤。它與csrf cookie有關嗎?Django admin CSRF 403錯誤

我的負載均衡器設置,

會議粘性 - 無

算法 - ROUNDROBIN

+0

你能告訴我你是怎麼做的嗎?請 –

+0

你需要打開會話粘貼或關閉CSRF。 – serg

+0

你好,你最終解決這個問題嗎?我有同樣的問題 – psychok7

回答

0

我不能成像任何情況下,直到你在一個瀏覽器選項卡中完成所有的工作時,它的可能。當您請求表單(使用GET請求)時,您將生成csrf cookie(如果它尚不存在)併爲此cookie生成csrfmiddlewaretoken,作爲響應,您將使csrf標記和cookie值處於一致狀態。在POST請求中,您的瀏覽器發送它們並在服務器端進行比較。所以,這種行爲不應該依賴於後端。但你總是可以用記錄器測試你的假設。從文檔:

CSRF故障記錄爲對django.security.csrf記錄器的警告。

改變在Django 1.11:

在舊版本中,CSRF故障記錄到django.request記錄。

+0

這是CSRF保護的重點,它依賴於後端。它將來自客戶端cookie的令牌與存儲在該特定後端的會話變量中的參考值進行比較。發送該請求到不同的後端,它應該失敗。 – serg

+0

我同意,如果您使用'CSRF_USE_SESSIONS = True'的Django 1.11。在其他情況下,不管後端爲您生成csrfmiddlewaretoken,因爲它只取決於發送的cookie值。當然,我認爲所有的後端都有相同的源代碼。 –