javascript - 将 X-editable 与 CodeIgniter 3 CSRF 问题结合使用

标签 javascript php codeigniter csrf x-editable

我正在使用启用了 CSRF 的 CodeIgniter 3。我有一个正在使用 X-editable 库 http://vitalets.github.io/x-editable/index.html 的页面在该页面上进行内联编辑。

有人在打开 CodeIgniter 和 CSRF 的情况下使用过 X-editable 吗?

我的问题是,当我启用 CSRF 时,我收到以下 CodeIgniter 生成的错误:

<h1>An Error Was Encountered</h1>
<p>The action you have requested is not allowed.</p>

如果我在 CI 中禁用 CSRF,效果很好。

我所知道的是,在使用 X-editable 库时,我无法找到使用 CSRF token 添加隐藏字段的方法,因为 javascript 库添加了它自己的表单和表单字段。我知道 CI 的 open_form() 方法会自动添加带有 CSRF token 的隐藏字段,但我无法选择将其与这个特定的库一起使用。

有什么想法吗?我已经被这个问题困扰了几天了。

这是我的 CI 项目中的 config.php 文件

$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'mycsrfname';
$config['csrf_cookie_name'] = 'csrfcookiename';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

这是在 Controller 中

$name = $this->input->post('name');
$value = $this->input->post('value');
$pk = $this->input->post('pk');
$result = $this->garage_model->editItem($name,$value,$pk);

最佳答案

禁用 ajax 调用的 CSRF token 并不是一个好主意。相反,您应该通过参数发送 token :

params: function(params) {
           params.csrfToken = $.cookie('csrfCookie');
           return params;
}

关于javascript - 将 X-editable 与 CodeIgniter 3 CSRF 问题结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501452/

相关文章:

javascript - 无法将元素添加到列表中

PHP Mysql 查询以 HTML 形式输出列表

php - 将文本拆分为关联数组

php - 在 if-else 中重新生成随机数(php)

javascript - 代码点火器 : echo folder path using php in javascript file

javascript - 如何在加载页面的所有其他内容后加载php页面

php - 在数据库中添加序列号,每年重置

javascript - 停止 d3 圆包标签重叠

javascript - 不显示 AngularJS View

javascript - 根据 Angular 4 中的某些条件,在子级中单击按钮时,从父级中的数组中删除特定的组件实例