带有 Csrf 保护的 Ajax 在 codeigniter 3.1.9 中显示 403 被禁止

问题描述 投票:0回答:1

我在通过带有 csrf 保护的 ajax 向控制器发送请求时遇到问题。它总是给出 403 禁止的错误。在本地主机和实时服务器上也面临这个问题。使用 condeigniter 3.1.9

以下是我的配置值。

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

Ajax 代码如下

$.ajax({
    type:"POST",
    url:"http://localhost/Demo/products/getdata",
    dataType:'html',
    data:"char="+char,
    success: function(data){
        $('#proCatS').html(data);
    }
});

请帮助解决这个问题。谢谢!

ajax codeigniter codeigniter-3
1个回答
0
投票

可以获取csrf_token_name和csrf_hash码,在POST中传递这些参数

var csfrData = {
    '<?php echo $this->security->get_csrf_token_name(); ?>': 
         '<?php echo $this->security->get_csrf_hash(); ?>'
};

$.ajax({
    type: "POST",
    url: "http://localhost/Demo/products/getdata",
    data: {
        char: char, 
        csrf_test_name: csfrData
    },
    success: function(data) {
        $('#proCatS').html(data);
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.