在外部js文件中获取CSRF令牌
Getting CSRF token in external js file
所以我想在我的 codeigniter 应用程序中启用 CSRF 保护,但这意味着我的 js 在外部文件中不再工作
function saveToDatabase(editableObj,field,id)
{
var pathArray = window.location.pathname.split( '/' );
var segment_3 = pathArray[3];
var save_data = {
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>',
'field':field,
'editedValue':editableObj.innerHTML,
'id':id
};
$.ajax({
url: segment_3+'/update',
type: 'POST',
data:save_data,
success: function(){
$(editableObj).addClass('bg-success');
}
});
}
我通过将其复制粘贴到视图文件中进行了测试,效果非常好。
所以问题是这条线
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>',
不会在外部文件中工作?有什么办法让它工作吗?
您可以将此值存储到隐藏输入或任何隐藏元素,然后您可以在外部 js 文件中访问它..
<input type ='hidden' name='what_you_want' id='whatever_you_like' value='<?php echo $this->security->get_csrf_token_name(); ?>'>
<input type ='hidden' name='what_you_want1' id='whatever_you_like1' value='<?php echo $this->security->get_csrf_hash(); ?>'>
而且你可以像这样在js中得到它
var tmp = $('#whatever_you_like').val();
var tmp1 = $('#whatever_you_like1').val();
var save_data = {
tmp: tmp1,
'field':field,
'editedValue':editableObj.innerHTML,
'id':id
};
像这样在头文件中定义JS常量
var CSRF_NAME = '<?php echo $this->security->get_csrf_token_name(); ?>'
var CSRF_TOKEN = '<?php echo $this->security->get_csrf_hash(); ?>'
然后在外部或内联 JS 中的任何地方调用 CSRF_NAME
或 CSRF_TOKEN
。
所以我想在我的 codeigniter 应用程序中启用 CSRF 保护,但这意味着我的 js 在外部文件中不再工作
function saveToDatabase(editableObj,field,id)
{
var pathArray = window.location.pathname.split( '/' );
var segment_3 = pathArray[3];
var save_data = {
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>',
'field':field,
'editedValue':editableObj.innerHTML,
'id':id
};
$.ajax({
url: segment_3+'/update',
type: 'POST',
data:save_data,
success: function(){
$(editableObj).addClass('bg-success');
}
});
}
我通过将其复制粘贴到视图文件中进行了测试,效果非常好。 所以问题是这条线
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>',
不会在外部文件中工作?有什么办法让它工作吗?
您可以将此值存储到隐藏输入或任何隐藏元素,然后您可以在外部 js 文件中访问它..
<input type ='hidden' name='what_you_want' id='whatever_you_like' value='<?php echo $this->security->get_csrf_token_name(); ?>'>
<input type ='hidden' name='what_you_want1' id='whatever_you_like1' value='<?php echo $this->security->get_csrf_hash(); ?>'>
而且你可以像这样在js中得到它
var tmp = $('#whatever_you_like').val();
var tmp1 = $('#whatever_you_like1').val();
var save_data = {
tmp: tmp1,
'field':field,
'editedValue':editableObj.innerHTML,
'id':id
};
像这样在头文件中定义JS常量
var CSRF_NAME = '<?php echo $this->security->get_csrf_token_name(); ?>'
var CSRF_TOKEN = '<?php echo $this->security->get_csrf_hash(); ?>'
然后在外部或内联 JS 中的任何地方调用 CSRF_NAME
或 CSRF_TOKEN
。