我这里有一个问题,当我尝试使用ajax(POST)发布内容时,我总是收到错误消息。我知道正是CSRF给我带来了这些问题,并且我已经来回尝试了寻找解决方案的过程。但是,我希望这里有人可以帮助我!
这是我不断收到的错误(来自Google Chrome浏览器),
PHP(控制器)
class Ajax extends CI_Controller { function images() { echo 'Hello World'; } }
Java脚本
var ID = $(".imageWrap:last").attr("id"); var baseurl = "http://localhost/woho/"; var doScroll = 1; var cct = $.cookie('csrf_cookie_name'); if (location.href == baseurl) { $(window).scroll(function(){ if ($(window).scrollTop() > $('body').height() / 2) { if(doScroll == 1) { $.post(baseurl + 'ajax/images',{'id' : ID, 'csrf_token_name': cct}, function(data) { alert(data); $("#wrapper_content").append(data); ID++; }); } } }); }
我来自javascript的CCT变量为我提供了正确的令牌或“哈希”,但是当javascript发送ajax请求时,codeigniter返回错误,例如
遇到错误不允许您执行请求的操作。
我怎样才能解决这个问题?我是否需要验证CSRF令牌或控制器中的某些内容?
我正在使用Codeigniter 2.0.3
试试(javascript):
var ID = $(".imageWrap:last").attr("id"); var baseurl = "http://localhost/woho/"; var doScroll = 1; var cct = $.cookie("<?php echo $this->config->item("csrf_cookie_name"); ?>"); if (location.href == baseurl) { $(window).scroll(function(){ if ($(window).scrollTop() > $('body').height() / 2) { if(doScroll == 1) { $.post(baseurl + 'ajax/images',{'id':ID,'<?php echo $this->security->get_csrf_token_name(); ?>': cct}, function(data) { alert(data); $("#wrapper_content").append(data); ID++; }); } } }); }