【发布时间】:2017-11-19 13:28:48
【问题描述】:
当我点击一个按钮时,我有一个函数被调用。我传递给函数的数据没有包含在表单标签中,所以我必须手动包含 csrf 令牌:
function NewDeleteBox(box_id, batch_id, staff_id){
$.ajax({
url: 'oss/admin/delete_box',
type: "POST",
data: {'batch_id': batch_id, 'staff_id': staff_id, 'box_id': box_id, '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash();?>'},
success: function(data) {
}
});
}
但是,我的 csrf_token_name 和哈希不起作用。它就像我在数据中声明它们的方式一样。
知道我为什么会得到这个吗?谢谢!
【问题讨论】:
-
此代码是否在 .php 文件中?只是想确定
-
是的。因为您将 PHP 用引号括起来(从而将它们变成字符串)——所以 jQuery 会将其视为字符串——您的客户端也将如此。此外,您的文件需要是 .php
-
@RiazLaskar 这是一个 JS 文件。这是在 codeigniter 中,所以 url 是子文件夹/控制器/方法
-
不......只有 .php 可以处理
-
不能放在JS文件中。 .php 扩展名告诉您的服务器在文件中查找 php。当文件扩展名为 .js 时,它不会运行 PHP
标签: php jquery ajax codeigniter csrf-protection