2016-06-11 9 views
2

Wie kann das erklärt werden?TokenMismatchException RANDOM auf AJAX-Anfragen Laravel

  1. reinigen Laravel installieren
  2. redis für Session und Cache
  3. das Problem mit nur auftreten, wenn ich den Server auf Windows-Start und zeigt nur auf Chrome.
  4. eine einfache js Funktion für Ajax-Aufruf verwenden:

    $.ajaxSetup({ 
        headers: { 
         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
        }, 
        data: { 
         _token: $('meta[name="csrf-token"]').attr('content') 
        } 
    }); 
    
    for(var i = 0; i < 5; i++){ 
    
        getUsers(); 
    } 
    
    function getUsers() { 
        $.ajax({ 
         url: '/users', 
         type: 'POST', 
         success: function(data) { 
          console.log(data); 
         } 
        }); 
    } 
    
  5. CSRF Einstellung in meta <meta name="csrf-token" content="{{ csrf_token() }}" />

  6. eine JSON mit Daten zurückkehrend:

    public function Benutzer() {

    $users = User::all(); 
    
    return response()->json([ 
        'users' => $users, 
    ]); 
    

    }

  7. Am Ende des Videos können Sie sehen RANDOM TokenMismatchException sogar das Token nie ändern, aber irgendwann Fehler auftreten.

https://www.youtube.com/watch?v=QDucHoP647g

Ich weiß, das Problem von Jahren diskutiert wurde, aber warum gibt es keine Lösung für dieses?

Ich habe auch auf Laravel Github geschrieben, aber keine der Lösungen hat mein Problem nicht gelöst.

Antwort

0

Warum senden Sie den Token zweimal? entfernen Sie diesen Datenteil von $.ajaxSetup()

Und warum verwenden Sie POST, um Benutzer zu erhalten? Verwenden Sie stattdessen GET.

+0

Dies ist ein Beispiel. Angenommen, ich werde einen Eintrag für diesen POST/Benutzer erstellen. Der Fehler wird auftreten. Von meinen Tests habe ich gerade festgestellt, dass das Problem TokenMismatchException nur auftritt, wenn ich mich an mich erinnere. (und ich habe einen Token entfernt und einmal gesendet). –

+0

Dies ist eigentlich keine Antwort auf die Frage des Autors. – antongorodezkiy