python token post403原因_Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法...
Django默認開啟防止csrf(跨站點請求偽造)攻擊,在post請求時,沒有上傳?csrf字段,導致校驗失敗,報403錯誤
解決方法1:
注釋掉此段代碼,即可。
缺點:導致Django項目完全無法防止csrf攻擊
解決方法2:
在?views.py文件中
#導入,可以使此次請求忽略csrf校驗
from django.views.decorators.csrf importcsrf_exempt
#在處理函數(shù)加此裝飾器即可
@csrf_exempt
defpost(request):
name=request.post['name']
return HttpResponse('welcome!{}'.format(name))
缺點:導致此次請求無法防止csrf攻擊,但是比第一種好很多
解決方法3:
針對使用模版進行開發(fā)的MTV模式,在模版文件提交form表單代碼中添加
但是本人不使用MTV模式進行開發(fā),只使用?Restful模式,所以對于Restfu模式開發(fā)的,使用第四種解決方法。
解決方法4:
django的csrf安全工作順序是:先從后臺獲取csrf_token?并發(fā)送給前端,然后前端在進行form表單提交時,把帶有名為csrfmiddlewaretoken,值為?csrf_token? 的字段一起發(fā)送給后端進行校驗。
所以此解決方案便是按照此邏輯,先通過一個接口獲取?csrf_token,然后在form表單中一起提交給后端校驗
from django.template.context_processors importcsrf
defget_csrf(request):
#生成 csrf 數(shù)據(jù),發(fā)送給前端
x =csrf(request)
csrf_token = x['csrf_token']
return HttpResponse('{} ; {}'.format(str(re), csrf_token))
然后在另一個POST請求中?加參數(shù)? 名為:csrfmiddlewaretoken? 值為?get_csrf函數(shù)返回的csrf_token? ,這樣校驗便成功
優(yōu)點:完成了?csrf?安全校驗
總結
以上是生活随笔為你收集整理的python token post403原因_Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么叫地址码 计算机指令的地址码和操作数
- 下一篇: python元祖迭代_如何在Python