我正在使用启用了 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? 或者有其他方法可以实现这一点?
谢谢!
也许创建一个返回创建的 crsf_token 的路由可以工作,或者保存到浏览器缓存或服务器会话也可以工作