1

这个问题真的需要很长时间才能解决,而且它正在生病......

昨天开始出现一个非常烦人的错误,我无法解决它为什么会发生的根源......

当我使用以下 javascript 代码时:

$(".reply_to_article").click(function(){
    var cct = $.cookie('csrf_cookie_name');

    var body = $(this).parent().find("textarea");

    $.ajax({
        type: "POST",
        url: "http://www.domain.com/articles/replyToArticle",
        dataType: 'json',
        data: {
            body : body.val(),
            csrf_name : csrf_value
        },
        success: function(data) {

        }
    });
});

并单击reply_to_article 按钮,请求根本不会结束并且持续无限时间...当我检查萤火虫时,加载图像总是旋转而没有结束...当我按ESC时它不返回任何内容...还检查了所有其他浏览器。 ..

还尝试直接访问 ajax 文件并且它可以工作......但是这个 POST 没有

它如何与 GET 而不是 POST 一起使用?

4

1 回答 1

0

我猜你有 CSRF 安全,你正在向控制器“发布”数据。在这种情况下,控制器调用 Security 构造函数来检查和验证 CSRF 令牌。如果令牌不正确,则返回 500 HTTP 错误。因此首先检查 500 错误。如果是这种情况,我猜您当前处理 csrf 令牌的方式不正确。

我不确定 csrf_name 和 csrf_value 是什么,但应该是

名称应该是:<?php echo $this->security->get_csrf_token_name();?>并且值应该是<?php echo $this->security->get_csrf_hash(); ?>

将这两个值存储在隐藏字段中,然后在脚本中使用它。

有关详细信息,请阅读此 SO 问题:codeigniter csrf protection error with ajax

于 2012-06-27T06:05:25.147 回答