crsf验证

    <button>点我获取到cookie</button>
    <button>点我发送cookie</button>
    <script>
        let d = document.querySelectorAll("button");
        d[0].onclick = function(){    //用于发起get请求获取cookie
            $.ajax({
                url:'/get_nanoid',
                method:'GET',
                success:function(res){
                    console.log("获取到了cooki",res);
                }
            })
        }
        d[1].onclick = function(){
            $.ajax({
                url:'/get_nanoid',
                method:'POST',
                headers:{'X-CSRFToken':    //将获取cookie的设置请求头用于crsf验证
document.cookie.substr(document.cookie.lastIndexOf('crsf_token')+'crsf_token'.length+1,48)},
                success:function(res){
                    console.log(res);
                    console.log('成功');
                }
            })
        }
const { nanoid } = require("nanoid")
const cookieParser = require("cookie-parser")//用于解析req.cookies["crsf_token"]

app.get("/get_nanoid",(req,res)=>{
    let crsf_token = nanoid(48);    //nanoid生成随机token
    res.cookie("crsf_token",crsf_token)    //当发送get请求时返回带有token的cookie
    res.send("1");
})

app.post("/get_nanoid",(req,res)=>{
    console.log(req.cookies["crsf_token"]);
    console.log(req.headers['x-csrftoken']);
    if(req.cookies["crsf_token"] === req.headers['x-csrftoken']){
        console.log("1");
        res.send("验证通过");
    }else{
        console.log("验证失败");
    }
})

nanoid最新版本为4,直接安装会发生错误 使用 npm i nanoid@3安装3版本就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值