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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章