【问题标题】:CodeIgniter Ajax CSRF Jquery Cookie Method behaving unexpectedlyCodeIgniter Ajax CSRF Jquery Cookie 方法行为异常
【发布时间】:2011-10-18 17:34:14
【问题描述】:

Javascript 部分:

var token = $.cookie("csrf_cookie_name");
var tx = document.getElementById("tx"+working_row).value;
var mods =document.getElementById("mods"+working_row).value;
var pos = document.getElementById("pos"+working_row).value;
var startdate = document.getElementById("startdate"+working_row).value;
var enddate = document.getElementById("enddate"+working_row).value;
var fordx = document.getElementById("4dx"+working_row).value;
var qty = document.getElementById("qty"+working_row).value;
var price = document.getElementById("price"+working_row).value;
obj = new Object();
obj={'csrf_token_name':token,'tx':tx,'mods':mods,'pos':pos,'startdate':startdate,'enddate':enddate,'fordx':fordx,'qty':qty,'price':price};
alert(obj.csrf_token_name);
$.post("index.php/auth/fee_schedule",obj, function(data){
    alert(data);
});

我遇到的问题是令牌变量未包含在帖子中。我不确定为什么。警报为 [Object Object],因此为空。该页面的标题有以下内容:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Medata Preauthorzation System</title>
    <link rel="stylesheet" href="<?php echo base_url();?>css/screen.css" type="text/css" media="screen">
    <script type="text/javascript" src="<?php echo base_url();?>js/jquery.js"></script>
    <script type="text/javascript" src="<?php echo base_url();?>js/jquery.sexy-combo.min.js"></script>
    <link rel="stylesheet" href="<?php echo base_url();?>css/jquery-ui-1.8.13.custom.css" type="text/css" media="screen">
    <link rel="icon" type="image" href="/medata/favicon.ico">
    <script type="text/javascript" src="<?php echo base_url();?>js/jquery.impromptu.js"></script>
    <script type="text/javascript" src="<?php echo base_url();?>js/jquery-ui-1.8.13.custom.min.js"></script>
    <script type="text/javascript" src="<?php echo base_url();?>js/cookie.js"></script>
</head>

所以包括库和 Cookie 函数。我在同一页面上使用了 10 次 cookie 函数来发布帖子,它工作正常,但我没有将它们中的任何一个放入具有其他变量的对象中,所以它只是内联 alla

$.post("index.php/auth/tx_history/"+tx_code, { csrf_token_name: $.cookie("csrf_cookie_name") }, function(data){
    //alert(data);
        $("#price"+rowid).val(data);
});

我很喜欢一些建议,我在下午的大部分时间里一直在不停地思考这段代码,以解决不间断的问题。

【问题讨论】:

    标签: php ajax codeigniter csrf


    【解决方案1】:

    也许:

    var token = $.cookie("<?php echo $this->config->item("csrf_cookie_name"); ?>");
    

    【讨论】:

    • 检查了配置,这是 cookie 项的准确名称。通过 Alerting that..Nice try but 仔细检查 =)
    • 不,这就是问题所在,我在某处阅读了导致 cookie 命名错误的记录问题。这意味着我的所有其他帖子都有效,因为我是从 URI 中提取数据而不是实际发布任何数据。因此,我更新了我的配置文件以通过故障将 cookie 命名为它所命名的名称,以使其一致,并且我已将令牌的名称更新为 csrf_token,现在我从 $ cookie 功能,但帖子仍然无法正常工作。
    • 从头开始,只是通过将 cookie 的名称和 cookie 中的元素名称更改为相同的东西来使其工作。愚蠢的虫子。感谢您的帮助!
    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2012-02-03
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多