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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ajax请求如何设置csrf_token

發(fā)布時(shí)間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ajax请求如何设置csrf_token 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 方式一

通過獲取隱藏的input標(biāo)簽中的csrfmiddlewaretoken值,放置在data中發(fā)送。

$.ajax({url: "/cookie_ajax/",type: "POST",data: {"username": "yang","password": 123,// 使用jQuery取出csrfmiddlewaretoken的值,拼接到data總"csrfmiddlewaretoken": $("[name="csrfmiddlewaretoken"]").val()},success: function(data){console.log(data);} })

2. 方式二

通過獲取返回的cookie中的字符串,放置在請求頭中發(fā)送。

注意: 需要引入一個(gè)jquery.cookie.js插件。

$.ajax({url: "/cookie_ajax/",type: "POST",// 從Cookie取csrftoken, 并設(shè)置到請求頭中headers: {"X-CSRFToken": $.cookie("csrftoken")},data: {"username": "yang","password": 123},success: function(data){console.log(data)} })

或者用自己寫一個(gè)getCookie方法:

function getCookie(name){var cookieValue = null;if (document.cookie && document.cookie !== ""){var cookies = document.cookie.split(";");for (var i = 0; i < cookies.length; i++){var cookie = jQuery.trim(cookies[i]);// Does this cookie string begin with the name we want?if (cookie.substring(0, name.length + 1) === (name + "=")){cookieValue = decodeURIComponent(cookie.substring(name.length + 1));break;}}}return cookieValue; } var csrftoken = getCookie("csrftoken");

每一次都這么寫太麻煩了,可以使用$.ajaxSetup()方法為ajax請求統(tǒng)一設(shè)置。

function csrfSafeMethod(method){// these HTTP methods do not require CSRF protectionreturn (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method); }$.ajaxSetup({beforeSend: function(xhr, settings){if (!csrfSafeMethod(settings.type) && !this.crossDomain){xhr.setRequestHeader("X-CSRFToken", csrftoken);}} })

注意:
如果使用從cookie中取csrftoken的方式,需要確保cookie存在csrftoken值。

如果你的視圖渲染的HTML文件中沒有包含{% csrf_token %}, Django可能不會(huì)設(shè)置CSRFtoken的cookie。

這個(gè)時(shí)候需要使用ensure_csrf_cookie()裝飾器強(qiáng)制設(shè)置Cookie。

django.views.decorators.csrf import ensure_csrf_cookie@ensure_csrf_cookie def login(request):pass

?

轉(zhuǎn)載于:https://www.cnblogs.com/yang-wei/p/10009106.html

總結(jié)

以上是生活随笔為你收集整理的Ajax请求如何设置csrf_token的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。