CI框架中开启了csrf_protection后,表单以及ajax传输都要带上一個token的值

1 篇文章 0 订阅

如果打开这个功能的话

post表单,提交给server 后报错: Error 500

An Error Was Encountered

The action you have requested is not allowed.

可以在application/config/config.php中找到下面这一行

$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

原本$config[‘csrf_protection’]把false改成true就可以打开

打开之后会自动帮你再cookie中存一个值

cookie的name可以再config.php中设定

之后传送表单就要连这个token一起传才行

一下是jquery的ajax功能示例

$(function(){
    $('#btn').click(function(){
        $.ajax({
            type:'POST'
            ,url:'/ajax' //ajax接收的server端
            ,data:$('#form').serialize()+'&csrf_test_name='+ getCookie('csrf_test_name')
            ,success:function(data){
            alert(data.msg);
            }
            ,dataType:'json'
        });
    });
});
 
function getCookie(name){
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
    if(arr != null) return unescape(arr[2]); return null;
}

csrf_test_name就是config.php中可以设定的参数

表单中隐藏域实例:

<input type="hidden" name="security->csrf_token_name?>" value="security->csrf_hash?>"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值