不再贅述,網上有的是
views中並沒有寫死到底是接收post還是get,我們可以自己進行判斷,如不判斷,都可以接收
如下:
@csrf_exempt
)
get請求返回如下:
post請求返回如下:
用postman等進行請求時,會報403
解決方案如下:
1、由於我們的是測試介面,所以直接新增裝飾器csrf_exempt,不進行跨站檢測即可
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
)
2、注釋掉settings.py中的csrf部分,如下:
middleware =
['django.middleware.security.securitymiddleware'
,'django.contrib.sessions.middleware.sessionmiddleware'
,'django.middleware.common.commonmiddleware'
,# 'django.middleware.csrf.csrfviewmiddleware',
'django.contrib.auth.middleware.authenticationmiddleware'
,'django.contrib.messages.middleware.messagemiddleware'
,'django.middleware.clickjacking.xframeoptionsmiddleware'
,]
此方法不可取,會導致整個專案面臨跨站攻擊的風險
3、在模版檔案中新增csrf,如下:
>
>
尚未登入,請登入:h1
>
此方法用postman等工具訪問時,就會報403
4、較優方法,目前沒太搞懂
django的csrf安全工作順序是:先從後台獲取csrf_token 並傳送給前端,然後前端在進行form表單提交時,把帶有名為csrfmiddlewaretoken,值為 csrf_token 的字段一起傳送給後端進行校驗。
所以此解決方案便是按照此邏輯,先通過乙個介面獲取 csrf_token,然後在form表單中一起提交給後端校驗
from django.template.context_processors import csrf
defget_csrf
(request)
:#生成 csrf 資料,傳送給前端
)
然後在另乙個post請求中 加引數 名為:csrfmiddlewaretoken 值為 get_csrf函式返回的csrf_token ,這樣校驗便成 http請求報400錯誤的原因分析
http 400 錯誤 請求無效 bad request 在ajax請求後台資料時有時會報 http 400 錯誤 請求無效 bad request 出現這個請求無效報錯說明請求沒有進入到後台服務裡 原因 1 前端提交資料的欄位名稱或者是字段型別和後台的實體類不一致 或 前端提交的引數跟後台需要的引...
django中的請求
1 django中的請求request 我們後端在寫好檢視處理函式的之後前端呼叫的話,有時候需要給我們傳引數,那麼django的request物件是如何獲取這些引數的呢?傳參方式 get,1.url傳參例如 weather str city int date 我需要獲取指定城市的指定日期的天氣資料,...
http中請求型別
序號 方法備註 1get 請求指定的頁面資訊並返回實體主體 2head 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 3post 向指定資源提交資料進行處理請求 4put 5delete 請求伺服器刪除指定頁面 6connect http 1.1協議中預留給能夠將連線改為管道方式...