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
@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.
@nowiutki: @Jurigag: @Narrorek: Dobra, już się wyjaśniło, debil ze mnie. xD W kontrolerze miałem umieszczoną linijkę $request->session()->flush(). Usunąłem i teraz wszystko śmiga, dzięki! :)
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
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
No chyba, że ktoś trzyma front na innej domenie to CORS zablokuje ciastko, ale nie wydaje mi się, żeby tak było w tym przypadku.
Pytanie zasadnicze to czemu mu regeneruje token przy każdym requeście.
W kontrolerze miałem umieszczoną linijkę $request->session()->flush(). Usunąłem i teraz wszystko śmiga, dzięki! :)