1. 程式人生 > 實用技巧 >django中遇到錯誤:Forbidden CSRF cookie not set

django中遇到錯誤:Forbidden CSRF cookie not set

CSRF cookie not set
提示就是說

未設定CSRF cookie

CSRF 是啥?

表示django全域性傳送post請求均需要字串驗證

功能: 防止跨站請求偽造的功能

工作原理:客戶端訪問伺服器端,在伺服器端正常返回給客戶端資料的時候,而外返回給客戶端一段字串,等到客戶端下次訪問伺服器
端時,伺服器端會到客戶端查詢先前返回的字串,如果找到則繼續,找不到就拒絕。

訪問流程:客戶端-》URL路由系統 - 》 CSRF -》檢視函式

我這裡要寫的是一個內部使用的api介面,也不大會有 跨站請求偽造

所以這裡提供兩個不是很推薦,但是非常簡單的方式解決這個問題

既然不需要 CSRF 這裡我們就把CSRF檢測關掉即可

解決方法1:

  1. 在你建立的專案中,找到settings.py檔案
  2. 檔案settings.py 找到 MIDDLEWARE引數
  3. 註釋掉'django.middleware.csrf.CsrfViewMiddleware',即可

就像這樣

解決方法2:

第二種方法和第一種差不多

上面是的註釋掉django.middleware.csrf.CsrfViewMiddleware,這是一個全域性的設定

其實我們也可以對單個api 進行特別設定

這裡 我們使用 @csrf_exempt 來進行處理

@csrf_exempt 是用來取消當前函式防跨站請求偽造功能

  1. views.py 檔案,這是我們處理api規則的
  2. 匯入from django.views.decorators.csrf import csrf_exempt
  3. 我們在對應的函式上加上@csrf_exempt

就像這樣,是不是很簡單

關注我獲取更多內容
注:轉載還請註明出處,謝謝_