【发布时间】:2011-11-13 04:33:58
【问题描述】:
我在这里遇到了一个问题,当我尝试使用 ajax (POST) 发布内容时,我不断收到错误消息。我知道是 CSRF 给我带来了这些问题,我一直在反复尝试寻找解决方案。但是,我希望这里有人可以帮助我!
这是我不断收到的错误(来自 google chrome 检查器),
*加载资源失败:服务器响应状态为 500(内部服务器错误) XHR 完成加载:“http://localhost/woho/ajax/images”。*
PHP(控制器)
class Ajax extends CI_Controller {
function images() {
echo 'Hello World';
}
}
Javascript
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 var 给了我正确的令牌或“哈希”,但是当 javascript 发送 ajax 请求时,codeigniter 返回一个错误,例如,
遇到错误您请求的操作是 不允许。
我该如何解决这个问题?我需要在我的控制器中验证 CSRF 令牌或其他东西吗?
我正在使用 Codeigniter 2.0.3
【问题讨论】:
-
顺便说一句,在 2.0.3 中没有
$this->security->get_csrf_token_name();这样的东西 @Alfonso Rubalcava 不知道从哪里得到的。
标签: php javascript jquery ajax codeigniter