2015-09-09 8 views
5

Hallo ich Controller anzurufenden Abschnitt bekommen mit AJAX in meiner codeigniter basierten Anwendung, die CSRFAjax CSRF 403 verboten codeigniter

mein Ajax-Code

$('#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); 
      } 
    }); 

aktiviert, wenn ich Ajax-Funktion erstes Mal aufrufe, es wird perfekt laufen. aber wenn ich die gleiche Funktion erneut ausführen, wird 403 verbotener Fehler zurückgegeben.

Bitte Rat, was ich tun

Antwort

10

Von the docs:

Tokens können entweder auf jeder Vorlage (Standard) regeneriert werden oder im Verkehr bleiben gleich über die gesamte Lebensdauer des CSRF-Cookie. Die Standardregeneration von Token bietet eine strengere Sicherheit, kann jedoch zu Bedenken hinsichtlich der Benutzerfreundlichkeit führen, da andere Token ungültig werden (Rückwärts-/Vorwärtsnavigation, mehrere Registerkarten/Fenster, asynchrone Aktionen, usw.). Sie können durch Bearbeiten der folgenden Konfigurationsparameter

$config['csrf_regenerate'] = TRUE; 

Set, dass auf FALSCH dieses Verhalten ändern.

+0

danke @quentin –