django中使用CSRF出現403錯誤的解決辦法
阿新 • • 發佈:2019-02-10
一.什麼是 csrf ?
簡單的說,它的中文名叫做“跨域請求偽造。複雜的可以看這裡
二.Django中如何使用csrf?
2.1新手的常犯錯誤
如果你是初學Django,那你很可能會遇到這樣一個問題——在前端用post請求傳值的時候,莫名出現了以下錯誤…
1.上圖中的箭頭所指便是產生錯誤的主要原因——“CSRF驗證失敗,請求被丟棄”。
2.而藍色框中的內容便是使用CSRF所要注意的幾個地方。
- 瀏覽器要開啟cookies
- 將‘django.middleware.csrf.CsrfViewMiddleware’加到settings.py的MIDDLEWARE= [xxx]裡面。
- 要將{% csrf_token %}放入你的post表單中!
- 後臺的view中要使用 render()方法!
2.2發生403錯誤時的解決辦法
博主在遇到這個錯誤時,並沒有仔細看注意事項。而是習慣性地百度了這個錯誤,看了一堆部落格,仍然沒有解決。最後認真看了注意事項,發現解決辦法其實就在注意事項裡面。(以下所述是正常使用csrf的方法,若想簡便,可以直接遮蔽掉 csrf,不過不推薦遮蔽的方式。)
2.2.1開啟瀏覽器cookies
瀏覽器的cookie開啟方式請自行度娘
2.2.2新增配置
當然,這個設定一般在建立專案時就已經自動配置好了。
2.2.3post表單中新增{% csrf_token %}
2.2.4後臺函式使用render()方法
注意:這裡所指的函式不是處理你表單資料的函式,而是跳轉到表單所在頁面的函式!!!博主便是在最後一步摔了個“七葷八素”,不過最後想想也是怪自己笨,你不先給它一個值,後臺又如何驗證呢?