Wpis z mikrobloga

Mirki, czy ktoś z Was programuje w Laravelu? Jak rozwiązać problem odświeżania tokenów CSRF przy wysyłaniu do serwera zapytań AJAX? Po wysłaniu pierwszego zapytania wszystko jest ok, ale każde kolejne zwraca błąd 419 "CSRF token mismatch".
Do komunikacji z serwerem używam JQuery. Nie mogę odświeżać tokenów bezpośrednio w pliku JS, bo jest to plik statyczny. Nie mogę też odświeżyć nagłówka z tokenem, bo musiałbym wtedy przeładować całą stronę (a nie chcę). Co robić?
#programista15k #programowanie #laravel #php #pytanie #pomocy
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@zjadlbymbanana: stwórz sobie kontroler do tokena - mniej więcej coś takiego:

return response()->json(["token"=>csrf_token()], 200);
i po GET pobieraj ajaxem nowy token przed każdym requestem.

Nie bardzo rozumiem jednak z czego wynika twój problem bo u mnie zwykłe, jednorazowe doklejenie tokena
  • Odpowiedz
@zjadlbymbanana: także strzelam, że albo gdzieś w kodzie masz $session->regenerateToken(); , albo przy drugim requeście "gubisz" (nie wiem w jaki sposób) ciastko z identyfikatorem sesji. Bo domyślnie laravel tworzy token csrf per sesja, a nie per request.
  • Odpowiedz