如果打开这个功能的话
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?>"