2015-09-09 26 views
5

khiển Xin chào tôi kêu gọi để có được phần sử dụng AJAX trong ứng dụng dựa trên CodeIgniter tôi có CSRF EnableAjax CSRF 403 cấm CodeIgniter

đang ajax tôi

$('#classes').change(function(){ 
    $classes=$(this).val(); 
      $.ajax({ 
      type:"POST", 
      data:{ 
       '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>', 
       'class':$classes 
      }, 
      url:"<?php echo base_url();?>index.php/admin/getsection/"+$classes, 
      success:function(return_data) 
      { 
       //alert(return_data); 
       $('#section').html(''); 
       $('#section').html(return_data); 
       $('#section').val(section); 
      } 
    }); 

Khi tôi gọi ajax chức năng lần đầu tiên, nó sẽ chạy hoàn hảo. nhưng khi tôi chạy lại chức năng tương tự, nó sẽ trả về 403 lỗi bị cấm.

Xin tư vấn những gì tôi làm

Trả lời

10

Từ the docs:

Tokens có thể được hoặc tái sinh trên tất cả các trình (mặc định) hoặc giữ nguyên trong suốt thời gian của cookie CSRF. Việc tạo lại mã thông báo mặc định cung cấp bảo mật chặt chẽ hơn, nhưng có thể dẫn đến khả năng sử dụng vì các mã thông báo khác không hợp lệ (điều hướng quay lại/chuyển tiếp, nhiều tab/cửa sổ, hành động không đồng bộ, v.v.). Bạn có thể thay đổi hành vi này bằng cách chỉnh sửa các thông số cấu hình sau

$config['csrf_regenerate'] = TRUE; 

Set rằng thành FALSE.

+0

cảm ơn @quentin –

Các vấn đề liên quan