日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ajax头文件报错,AJAX的CSRF保护

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ajax头文件报错,AJAX的CSRF保护 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果使用ajax傳輸數據,需要在AJAX中要使用csrf保護。

一般而言,即在后端已經使用了CSRFProtect(app)的前提下,

如果想使用ajax,避免400的報錯,可以前端的表單里引入標簽,如下所示

login.html

然后在js中的ajax代碼塊中將csfr包裹起來:

login.js

$(function () {

$('#submit').click(function (event) {

// 阻止默認的提交表單的行為

event.preventDefault();

var email = $('input[name=email]').val();

var password = $('input[name=password]').val();

var csrftoken = $('input[name=csrf_token]').val()

$.post({

'url': '/login/',

'data': {

'email': email,

'password': password,

'csrf_token':csrftoken

// 把csrf也作為數據傳輸過去

},

'success': function (data) {

console.log(data);

},

'fail': function (error) {

console.log(error);

}

});

});

});

以上方法是完全可行的,但是太low逼了,雖然后臺通過wtform可以正確拿到數據:

form=LoginForm(request.form)

if form.validate():

email=form.email.data

password=form.password.data

print(email,password)

參考官方文檔,官方文檔給出的建議是如果是ajax,最好是在頭文件寫csrf-token,即手動的添加X-CSRFToken到Header中。但是CSRF從哪里來,還是需要通過模板給渲染,Flask比較推薦的方式是在前端html文件的meta標簽中渲染csrf,如下:

login.html

參考官方文檔,如果要發送AJAX請求,則在發送之前要添加CSRF,官網文檔里有這樣一段很屌的代碼如下(使用了jQuery),在頭文件里處理了csrftoken:

var csrftoken = $('meta[name=csrf-token]').attr('content')

$.ajaxSetup({

beforeSend: function(xhr, settings) {

if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {

xhr.setRequestHeader("X-CSRFToken", csrftoken)

}

}

})

于是,相應的最初版的login.js改寫成如下的形式

login.js

$(function () {

$('#submit').click(function (event) {

// 阻止默認的提交表單的行為

event.preventDefault();

var email = $('input[name=email]').val();

var password = $('input[name=password]').val();

// 得到head中的csrf-token的attr值

var csrftoken = $('meta[name=csrf-token]').attr('content')

$.ajaxSetup({

beforeSend: function(xhr, settings) {

if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {

xhr.setRequestHeader("X-CSRFToken", csrftoken)

}

}

});

$.post({

'url': '/login/',

'data': {

'email': email,

'password': password,

// 注意與最初的版本的不同

},

'success': function (data) {

console.log(data);

},

'fail': function (error) {

console.log(error);

}

});

});

});

這是按照官方文檔標準的寫法,但是也太麻煩了。。。。。

所以,我們可以自己封裝一個myajax.js文件:

myajax.js

var myajax = {

'get':function(args) {

args['method'] = 'get';

this.ajax(args);

},

'post':function(args) {

args['method'] = 'post';

this.ajax(args);

},

'ajax':function(args) {

// 設置csrftoken

this._ajaxSetup();

$.ajax(args);

},

'_ajaxSetup': function() {

$.ajaxSetup({

'beforeSend':function(xhr,settings) {

if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {

var csrftoken = $('meta[name=csrf-token]').attr('content');

xhr.setRequestHeader("X-CSRFToken", csrftoken)

}

}

});

}

};

接著在前端html文件的meta標簽中渲染csrf,同時調用myajax.js,如下:

base.html

Title

{% block head %}{% endblock %}

導航條

{% block body %}{% endblock %}

底部欄

附上login.html代碼,在其中引入了login.js:

{% extends 'base.html' %}

{% block head %}

{% endblock %}

{% block body %}

郵箱:
密碼:

{% endblock %}

最后在login.js中調用封裝好的myajax.post替代原聲的$.ajax.post:

login.js

/**

* Created by hynev on 2017/11/10.

*/

//jquery

//XMLHTTTPRequest

//整個文檔都加載完畢后才會執行這個函數

$(function(){

$('#submit').click(function(event){

//阻止默認的提交表單的行為

event.preventDefault();

varemail=$('input[name=email]').val();

varpassword=$('input[name=password]').val();

myajax.post({

'url':'/login/',

'data':{

'email':email,

'password':password

},

'success':function(data){

console.log(data);

},

'fail':function(error){

console.log(error);

}

});

});

});

這個myajax.js這個文件可以直接用在很多地方。

總結

以上是生活随笔為你收集整理的ajax头文件报错,AJAX的CSRF保护的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜视频网站在线观看 | 亚洲国产激情 | 亚洲免费大片 | 人人妻人人澡人人爽精品欧美一区 | www婷婷av久久久影片 | 丰满少妇高潮久久三区 | 爱爱视频免费网站 | 亚洲欧美综合久久 | 国产尤物视频在线观看 | 欧洲三级视频 | 亚洲视频日韩 | 亚洲色图欧美另类 | 一本大道熟女人妻中文字幕在线 | 91在线无精精品白丝 | 国产成人精品视频一区二区 | 久久国产传媒 | 亚洲www色| 国内黄色片 | 成人无码av片在线观看 | 黄频在线| 男人吃奶视频 | 亚洲一二三四五 | 欧美精品一区二区在线播放 | 日本高清视频一区二区 | www.久久视频 | 大香伊人久久 | 欧美日韩在线视频 | 色漫| 91麻豆精品国产 | 毛片大全免费 | 一级a毛片免费观看久久精品 | 91av官网| www.youjizz.com日本| av噜噜噜| 国产一区二区三区四区视频 | 一色屋免费视频 | 玖玖爱av | 女性女同性aⅴ免费观女性恋 | 亚洲欧美激情一区二区三区 | 国产超碰人人爽人人做人人爱 | 天天干夜夜艹 | 亚洲影视一区二区 | 国产麻豆精品在线观看 | 91亚洲精品在线观看 | 国产中文字幕精品 | www.日本黄色| 日韩少妇高潮抽搐 | 国产av人人夜夜澡人人爽麻豆 | 国产乱码久久久久 | 特一级黄色 | 精品乱子伦一区二区 | 无码h肉动漫在线观看 | 亚洲免费高清视频 | 肉体粗喘娇吟国产91 | 日本成人精品 | 精品一区视频 | 一区二区三区欧美 | 春色av| 最新中文字幕一区 | 黄色大毛片 | 国产青青草在线 | 久久久久久久久久久电影 | 欧美黑大粗 | 午夜在线观看视频18 | 国产亚洲精品久 | 久久a久久 | 国产乱人伦精品 | 热久久中文字幕 | 久久免费视频一区二区 | 黄色不卡视频 | 少妇全黄性生交片 | 中文字幕在线观看线人 | 色在线播放 | 久久婷五月 | 日韩中文字幕电影 | 小sao货水好多真紧h无码视频 | 精品国产91乱码一区二区三区 | 国产成人精品影院 | 毛片在线网站 | 国产精品区二区三区日本 | 四虎精品在线 | av中出在线 | 中文乱码人妻一区二区三区视频 | 国产精品免费在线 | 6—12呦国产精品 | 成年人在线免费看 | 欧美日韩久久婷婷 | 嫩草视屏| 香蕉视频成人在线 | 国产一区二区在线视频观看 | 欧美高清性xxxx | 亚洲色图14p | 国产夫妻一区 | 一区二区三区黄色 | 青青操国产视频 | 青青操在线观看视频 | 两个人看的www视频免费完整版 | 欧美另类z0z变态 | 国产在线激情 |