【问题标题】:CSRF cookie in Ajax PostAjax Post 中的 CSRF cookie
【发布时间】:2013-12-18 11:48:18
【问题描述】:

我使用 CodeIgniter 框架并使用此功能对我的新闻帖子进行排序

$(".news-list").sortable({
 opacity: 0.6,
 cursor: 'move',
 update: function(event, ui) {
    var order = $(this).sortable("serialize"); //console.log(order);
   $.ajax({
     type: 'POST',
     url: "<?php echo base_url();?>news/sort_posts/", 
     data: ( order ),
     success: function(data){ console.log('Success'); },
     error: function(data){ console.log("Fail"); }
    })
},
      distance: 15 
});

尽管我必须在 config.php 中禁用 CSRF 才能使其工作,因为 CSRF-cookie 不包括在内。

所以,使用我要发送的订单数组:

<?php echo $this->security->get_csrf_token_name() ?> : '<?php echo $this->security->get_csrf_hash() ?>'

这是怎么做到的?

【问题讨论】:

    标签: php jquery ajax codeigniter csrf


    【解决方案1】:

    您真的只需要获取该值并将其附加到数据参数中

    <?php
    $token = $this->security->get_csrf_token_name() . '=' . $token = $this->security->get_csrf_hash();
    ?>
    

    var order = $(this).sortable("serialize");
    order += "&csrf=<?php echo $token; ?>"
    

    【讨论】:

      【解决方案2】:

      PHP:

      $token = '&'.$this->security->get_csrf_token_name().'='.$this->security->get_csrf_hash();
      

      jQuery:

      order += "<?php echo $token; ?>"; 
      

      【讨论】:

      • 稍微改变我的答案并发布为你自己的答案。
      猜你喜欢
      • 2015-05-22
      • 2018-02-10
      • 2015-03-11
      • 2012-05-20
      • 2019-07-14
      • 1970-01-01
      • 2015-07-02
      • 2015-11-09
      • 2019-01-30
      相关资源
      最近更新 更多