2011-06-17 61 views
2

我在我的開發服務器上的工作沒有問題,當我在生產服務器上試了一下,在一個真正的名字,而不是本地主機也不IP,我得到:Django的CSRF在生產服務器發生故障

Forbidden (403) 

CSRF verification failed. Request aborted. 
Help 

Reason given for failure: 

    CSRF cookie not set. 

我通過jQuery發送我的帖子,使用JavaScript修復後的方法和所有...

不知道還有什麼可以做...任何人都可以給我一隻手?

非常感謝!

回答

1

Cookie未設置通常意味着您沒有add the csrf middleware。將其添加到您的生產部署的相關設置模塊中。您還需要確保接收視圖在通過javascript使用時有效。

您有兩種選擇。將服務器上的視圖標記爲csrf_exempt,或者您需要在請求中包含csrf標記。 csrf標記可用於任何模板,如{% csrf_token %}。我會做後者。

要在請求中包含csrf標記,只需將它作爲POST變量csrf_token傳遞即可。你可以只是有一個片段在這樣一個模板:

<script type="text/javascript"> 
    var csrf_token = '{% csrf_token %}'; 
</script> 

而且無論你正在做的請求,只是添加"csrf_token": csrf_token,到後的數據。