附加 javascript 文件中用于 AJAX 调用的 CSRF 令牌

问题描述 投票:0回答:1

我正在使用启用了 CSRF 保护的 Codeigniter 4。我在附加的 js 文件中有一个 AJAX 调用,但我不知道如何生成 CSRF 令牌。 以前,我已经在嵌入js的php文件中完成了它,但是在附加的js文件中我无法运行php。

在附加的js文件中我有:

//makes a tooltip with description of analysis (header)
    $('.tbl-header').each(function () {
        makeHeaderInfo($(this))
    })

function makeHeaderInfo(header) {
        var analysis = header.hasClass('seed') ? 'Seedling ' + header.text().toLowerCase() : 'Sapling ' + header.text().toLowerCase();
        var posturl = baseURL + "forest_regen/getAnalysisDetails";
        var data = {};
        data['analysis'] = analysis;
//This is what I would do in a php file...
//       var csrfName = '<?= csrf_token() ?>'; 
//       var csrfHash = '<?= csrf_hash() ?>';   
//       data[csrfName]=csrfHash;
        $.when($.ajax({type: "POST", url: posturl, data: data, dataType: 'json'})).done(function (result) {
            var description = (result.fldDescription == null) ? 'No description for this analysis yet' : result.fldDescription
            header.children('.header-info').attr('title', description)
                    .tooltip({
                        trigger: 'click hover',
                        placement: 'top',
                        container: 'body'
                    })
        })
    }
    ;

我尝试在附加了此 js 文件的 php 文件中定义变量,但我得到“csrfName 未定义”。 我不知道如何将变量传递到js文件?

有没有办法在javascript或jquery中生成csrfName和csrfHash? 或者有其他方法可以实现这一点?

谢谢!

javascript php codeigniter codeigniter-4 csrf-token
1个回答
0
投票

也许创建一个返回创建的 crsf_token 的路由可以工作,或者保存到浏览器缓存或服务器会话也可以工作

© www.soinside.com 2019 - 2024. All rights reserved.