我想在我的CI 2.1应用程序中使用ajax获得CSRF工作。无法让CSRF与ajax一起工作(CI 2.1)
我已经搜索关于这一点,发现几个指导,推进但couln't解决问题 http://ericlbarnes.com/post/10728867961/codeigniter-csrf-protection-with-ajax http://www.beheist.com/index.php/en/blog/csrf-protection-in-codeigniter- 2-0-A-靠近光看是我的看法,我使用form_open
http://aymsystems.com/ajax-csrf-protection-codeigniter-20我已经在配置
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'token01';
$config['csrf_cookie_name'] = 'token02';
$config['csrf_expire'] = 7200;
这里设置两个不同的令牌两个令牌值
我使用这个JavaScript进行异步调用
<script type="text/javascript">
$(document).ready(function(){
$("#submit").click(
function(){
var form_data = {
username: $("#username").val(),
password: $("#password").val(),
csrf_token_name: $("input[name=token01]").val()
};
$.ajax({
type: "POST",
url: "http://localhost/pis/user",
data: form_data,
success:
function(data){
$("#debug").html(data.message).css({'background-color' : data.bg_color}).fadeIn('slow');
}
});
return false;
});
});
</script>
当我运行此我得到一个“500内部服务器错误”与“一个错误沿着遇到,您所要求的动作不允许“作为回应。 Firebug正确显示POST数据参数。
例如:用户名=根&密码=根& csrf_token_name = 31961f17de5fa2df657ab1aba880f718
如何过,如果我删除了CSRF,Ajax请求运行良好,我也得到200响应
谁能帮助我,请?
没关系,想通了。我应该在js文件中使用标记名称而不是csrf_token_name。 token01:$(“输入[名称= token01]”)VAL() – ranilchaminda
请添加为回答这个问题,以便从没有答案的堆栈中删除这个问题,接受它。 – PaulSkinner