CSRF(启用为true)后无法正常工作INSERT,ADD,DELETE

时间:2019-07-09 05:28:31

标签: ajax codeigniter csrf

我想在CodeIgniter框架中标记生成CSRF,因此我将csrf标记更改启用为真。

Here is the image

$.ajaxSetup({
        headers: {
          '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>'
        }
    });
    $(document).on('click', '.update', function(){
      var id = $(".data-check:checked").val();
            $.ajax({  
             url:"<?php echo base_url(); ?>MasterPartTypeController/part_type_fetch_getbyid",  
             method:"POST",  
             data:{id:id},  
             dataType:"json",  
             success:function(data)      
             {  
                $('#part_type').val(data.part_type);
                $('#description').val(data.description);
                $('#id').val(id);
                $(".ui-page-toggler" ).slideToggle("slow");
                $('.ui-page-toggler').removeClass('hide');
                $('#action').val("Edit");  
             }  
        })  
    });
  

403禁止

1 个答案:

答案 0 :(得分:0)

我认为问题是codeigniter在帖子vars中而不是标题中查找。我在头文件的顶部使用以下代码:

            var token = {};
            token['<?php echo $this->security->get_csrf_token_name(); ?>'] = '<?php echo $this->security->get_csrf_hash(); ?>';
                jQuery.ajaxSetup({
                    data: token,
                    type: 'POST',
                    error: function (jqXHR, textStatus, errorThrown) {
                        if (jqXHR.status == 404) {
                            alert('AJAX page not found.');
                        } else {
                            console.error('AJAX Error: ' + textStatus + ': ' + errorThrown);
                        }
                    }
                });