【问题标题】:jquery ajax post doesnt work but get worksjquery ajax post 不工作但得到工作
【发布时间】:2012-06-27 05:44:19
【问题描述】:

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

昨天开始出现一个非常烦人的错误,我无法确定它发生的原因......

当我使用以下 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?

【问题讨论】:

  • GET 是在哪个浏览器上工作的,你能不能展示一下 get 的代码,你只是把 POST 改成 GET 吗?
  • 它在 Firefox、chrome、safari 上工作,就像我在 mac 上一样,是的,我用 GET 更改了 POST
  • 您是在尝试与另一个域通信还是在同一个站点上?如果您控制该网站,您可以发布您的服务器端代码吗?
  • 是服务器端的问题吗?服务器是否无法正确响应 POST 请求?尝试在 Firefox 中使用 RESTClient 之类的东西,看看服务器如何响应各种请求。
  • @Baz1nga 不是同一个站点...它在 2 天前可以工作,但现在不行...我找不到原因

标签: jquery ajax codeigniter post get


【解决方案1】:

我猜你有 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

【讨论】:

  • 为什么我看不到 500 错误? error_log 上也没有错误?我使用正确的 csrf 令牌名称和值,所以那里也没有问题......
猜你喜欢
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多