前面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請求引數...