簡介
在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錯誤
可以看看以下筆者自己學習程序中解決的方法:
- 檢查{% csrf_token %}放入位置是否正確
<form >
{% csrf_token %}
</form>
- 位置沒有錯誤就麻煩的方法,檢查自己的代碼有沒有錯誤,
- 確定自己已經檢查完了,還是報錯,那么如果并不是很重要,僅僅是學習用途,不存在商業用途的可以把setting.py里的csfr設定注釋掉:

- (這個解決方法是筆者使用到request.session,cookie時無奈之舉)換瀏覽器打開測驗頁面,
這是筆者目前為止能解決的方法,因為百度到的有部分試過沒效果就沒寫出來,如果還是沒有解決你的問題,筆者表示遺憾,筆者新人,不喜勿噴,大家都是喜歡才聚集在此,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/197477.html
標籤:其他
