【JS】JS获取cookie里的csrftoken并添加到header里

Django需要csrftoken来进行CSRF的防御

既然是前后端都自己写,肯定不能整@csrf_exempt这样的办法

JS用正则表达式获取cookie

var regex = /.*csrftoken=([^;.]*).*$/ ;
var xCSRFToken = document.cookie.match(regex) === null ? null : document.cookie.match(regex)[1]

cookie的样式

Cookie: sessionid=tc3prqefkjt7f6xqmip1qskzyq0y0vwn; csrftoken=2IWCjzAvDpzk55NGRozbNqDulhg362n1UNIDOdtRMJsvFFW1bg3rLGZl39nDwlc2

在ajax里加入

headers: {
    "X-CSRFToken":xCSRFToken
},

这样就把csrftoken加入到了headers里面

这个方法,其实是从postman里搞出来的.

在postman里加入csrftoken成功,仿照着postman的数据样式,成功拼接到了csrftoken.
这是一个以前同事教我的办法

之前写过的关于postman设置csrftoken的方法

今天百度百度,居然百度到了自己以前写过的教程,也是很神奇.

网上的jquery.cookie.js,我也下载了,下载了两个版本GitHub的,网站上的,导入后,一直报错,没有$.cookie的方法,实在没辙,只好写正则表达式了…

在Web开发中,CSRF(Cross-Site Request Forgery)是一种攻击方式,攻击者利用用户已经登录了某个网站的身份,去发送一些恶意请求,例如在用户不知情的情况下在其账户下发帖、转账等操作。为了防止这种攻击,Web应用程序通常会使用CSRF Token来保护用户身份。CSRF Token是一种随机字符串,用于验证请求来源是否合法。 在获取CSRF Token时,通常需要在后端生成一个Token,并将其发送到前端,前端再将其存储在Cookie中。当用户在前端发起请求时,前端会将该Token作为请求参数发送到后端,后端会验证Token是否合法。 具体获取方式可能因为不同的框架而有所不同,以下是一些常见的获取CSRF Token的方式: 1. Django框架中,可以在后端使用`csrf_token`模板标签生成Token,并将其渲染到前端页面中: ```html <form method="post"> {% csrf_token %} ... </form> ``` 2. 在前端使用AJAX请求时,可以从Cookie获取Token添加到请求头中: ```javascript 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 = cookies[i].trim(); if (cookie.substring(0, name.length + 1) === (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } var csrftoken = getCookie('csrftoken'); $.ajax({ url: '/some/url/', type: 'POST', headers: { 'X-CSRFToken': csrftoken }, data: { ... }, success: function(response) { ... } }); ``` 3. 在Vue.js框架中,可以使用`axios`库发送请求,并在请求头中添加Token: ```javascript import axios from 'axios'; import Cookies from 'js-cookie'; const csrftoken = Cookies.get('csrftoken'); axios.defaults.headers.common['X-CSRFToken'] = csrftoken; axios.post('/some/url/', { ... }).then(response => { ... }); ``` 以上是一些常见的获取CSRF Token的方式,具体实现方式可能因为不同的框架而有所不同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值