我这里有一个问题,当我尝试使用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 变量给了我正确的令牌或“哈希”,但当 JavaScript 发送 Ajax 请求时,Codeigniter 返回错误消息:
遇到错误 请求的操作不被允许。
我该如何修复这个问题?需要在我的控制器中验证 CSRF 令牌或其他什么吗?
我正在使用 Codeigniter 2.0.3。
$this->security->get_csrf_token_name();这样的东西。不确定@Alfonso Rubalcava从哪里得到的。 - Jakub