1. 程式人生 > >django中使用CSRF出現403錯誤的解決辦法

django中使用CSRF出現403錯誤的解決辦法

一.什麼是 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()方法
這裡寫圖片描述
注意:這裡所指的函式不是處理你表單資料的函式,而是跳轉到表單所在頁面的函式!!!博主便是在最後一步摔了個“七葷八素”,不過最後想想也是怪自己笨,你不先給它一個值,後臺又如何驗證呢?