2016-03-21 237 views
1

我送從一個Android應用程序中的POST請求到我的服務器,但我得到這個錯誤:CSRF驗證失敗。請求中止。當我發送POST請求

enter image description here

的POST樣子: http://example/my_page_url/1000 凡1000是一ID。

這是我的觀點方法:

def inventory(request, cross_id): 

    text_file = open("test.txt", "w") 
    text_file.write('POST Received') 

    text_file.write(cross_id.__str__()) 
    text_file.close() 

    return render(request, 'Inventory.html', {}) 

我的模板代碼:

<form action='' method="POST"> 

    <button type="submit" id="btn_save" name="btn_save">Save</button> 

    {% csrf_token %} 

</form> 

其實,我並不真的需要調用模板,因爲我想在服務器上執行的東西只要。但我現在只是爲了防止任何錯誤而調用模板。

我已經閱讀了同樣問題的其他答案,但他們都錯過了模板中的CSRF標記或視圖方法中的其他內容,但我相信這裏的情況不同。

+0

你真的發佈該表單或其他東西嗎? – Sayse

+0

不, POST來自android應用程序。 而對於測試,我現在從Postman應用程序發佈以獲取錯誤消息。 –

+0

那麼是的,你會的,你需要在你的發佈請求中包含一個有效的csrf標記 – Sayse

回答

2

您需要將X-CSRFToken標題添加到所有POST請求。

您可以從名爲csrftoken的cookie中爲此標頭獲取適當的值。

要在Postman中測試此功能,您需要啓用攔截器插件(右上角)。

安裝完成後,請GET請求/admin/login/(確保您在瀏覽器中從站點註銷)。在Cookie部分,您應該看到一個名爲csrftoken的cookie,並複製其值。

現在,請將同一個網址(/admin/login)的請求類型設置爲POST,並使用您之前複製的值添加名爲X-CSRFToken的標頭。在Body部分設置usernamepassword字段並點擊發送。

X-CSRFToken

如果你的POST不需要身份驗證,可以從更早的GET請求使用csrftoken

相關問題