1. 程式人生 > 實用技巧 >CSRF verification failed. Request aborted.的解決辦法

CSRF verification failed. Request aborted.的解決辦法

{%csrf_token%}(踩坑必看)

簡介

在django中我們需要在templates的form中加入{%csrf_token%}這串內容,它的作用是當我們get表單頁面時,伺服器返回頁面的同時也會向前端返回一串隨機字元,post提交時伺服器會驗證這串字元來確保使用者是在服務端返回的表單頁面中提交的資料,防止有人通過例如jquery指令碼向某個url不斷提交資料,是一種資料提交的驗證機制。

用途

跨站點請求偽造(CSRF)保護
CSRF攻擊允許惡意使用者使用另一個使用者的憑據執行操作,而不需要該使用者的知情或同意。
Django內建了對大多數csrf攻擊的保護,只要您有啟用並使用在適當的情況下。然而,與任何緩解技術一樣,也有侷限性。例如,可以在全域性或特定檢視中禁用CSRF模組。只有當你知道自己在做什麼時,你才應該這樣做。

就是說為了防止你做的網站掛網後被不懷好意的人利用攻擊手段篡改了你的請求操作,讓伺服器執行一些攻擊者想要執行的操作以達到某種目的而設立的安全機制。

使用

<form>
	{%csrf_token%}
</form>

注意:必須在form表單內部

使用後無效果的解決方法

一般情況我們使用pycharm建立一個DJango專案時,在專案根目錄下的同名資料夾的setting.py檔案裡我們通常都能看到有一條設定

'django.middleware.csrf.CsrfViewMiddleware'


預設建立完django專案這條設定會預設啟用,為什麼會啟用?(想快點解決問題的可以直接跳過該部分)

那麼檢查完上述settings.py檔案裡的設定未被註釋,表單也設定了{% csrf_token %} 測試表單時還是報403錯誤

可以看看以下筆者自己學習過程中解決的方法:

  1. 檢查{% csrf_token %}放入位置是否正確
<form >
	{% csrf_token %}
</form>
  1. 位置沒有錯誤就麻煩的方法,檢查自己的程式碼有沒有錯誤。
  2. 確定自己已經檢查完了,還是報錯,那麼如果並不是很重要,僅僅是學習用途,不存在商業用途的可以把setting.py裡的csfr設定註釋掉:

轉載:https://www.cnblogs.com/wuhongbin/p/13907450.html