正在外部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中的任意位置调用CCD_ 3或CCD_。
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 如何在jQuery中获取元素的形式
- 如何在php文件中获取$.post-ajax传递的值
- 在Shopify中获取博客文章的图片
- 使用Javascript获取所选选项ID
- 在jQuery中获取表的行索引
- 使用jquery将mysql数据获取到新的表行中
- 在动态创建的元素上获取对特定选择器的引用
- 从城市名称获取惊喜
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 从ajax请求中获取javascript对象
- 如何从画布上的某个移动事件中获取X和Y
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在PHP中使用$_POST获取Select元素值
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 正在外部js文件中获取CSRF令牌
- 在表单提交时,通过php文件获取CSRF并将值传递给请求