Flask框架在Ajax請求中開啟CSRF保護

2021-07-28 23:34:02 字數 1727 閱讀 7536

前面flask學習總結筆記(5)– form表單中對表單提交中開啟csrf保護進行了詳細講解。雖然ajax不同於表單提交,但是我們同樣可以手動利用相同的辦法,開啟csrf保護。

表單類:

class

loginform

(form):

''' 登入表單類

'''email=stringfield("txtloginemail",validators=[datarequired(message=u'郵箱位址不能為空'),email(message=u'郵箱格式不正確')])

password=passwordfield("txtloginpassword",validators=[datarequired(message=u'密碼不能為空')])

remeber_me=booleanfield("remeber_me")

模板:

lang="en">

charset="utf-8">

登入title>

src="">

script>

head>

id="loginform"

method="post">}}

:}}:

}}:}

type="button"

id="btn">提交button>

form>

$(function

()}",

type:'post',

datatype:'json',

data:post_data,

success:function(data)

});}) ;

});script>

body>

html>

直接將form進行serialize(),作為引數進行提交。

views.py:

@auth.route('/login2')

deflogin2

(): loginform=loginform()

return render_template('auth/login2.html',form=loginform)

@auth.route('/ajax/',methods=['post'])

defajax

(): email=request.form.get('email')

password=request.form.get('password')

remeber_me=request.form.get('remeber_me');

loginform=loginform(email=email,password=password,remeber_me=remeber_me)

if loginform.validate_on_submit():

result=

else:

result=

return json.dumps(result)

這樣,我們借助flask wtf庫實現了ajax請求開啟csrf保護的問題。可以抓包來測試:

正確的csrf_token:

錯誤的csrf_token(或者不提交csrf_token):

Flask框架踩坑之ajax跨域請求實現

業務場景 前後端分離需要對接資料介面。介面測試是在postman做的,今天才開始和前端對接,由於這是我第一次做後端介面開發 第一次嘛,問題比較多 所以在此記錄分享我的踩坑之旅,以便能更好的理解,應用。問題 前端ajax請求後端介面出現跨域問題,如下圖。翻譯 因為響應頭沒有 access contro...

Yii框架 ajax請求問題

今天我在做乙個專案,用到了非同步操作,但總是跳過 ajax 方法。後來檢查n遍,把前端也叫來了幫忙,還是沒發現 錯了。最後!發現錯誤的時候趕腳今天沒帶腦子上班 接下來,就來說說我自己給自己挖的坑吧!頁面 由於ajax沒有加data引數!沒有加data引數!沒有加data引數!重要的事情要說三遍!而且...

Flask框架 03 請求與響應

服務端在接收到客戶端的請求後,會自動建立request物件 由flask框架建立,requesy物件不可修改 屬性 base url 去掉get引數的url host url 只有主機和埠號的url path 路由中的路徑 method 請求方法 args get請求引數 form post請求引數...