Laravel 8 CSRF Token mismatch setInterval
Project của mình đang bị vấn đề CSRF token mismatch khi mình dùng setInterval trong javascript mỗi 5 giây.
Như các bạn thấy ở hình bên trên. Tất cả đều là POST request. Mình đã thêm token vào data. Thêm cả token vào headers. Nhưng thỉnh thoảng sẽ có 1 request bị lỗi. Các request sau đó vẫn ổn.
Mong các bạn giúp mình gỡ vấn đề này.
1 CÂU TRẢ LỜI
Ở request trước bạn trả về thêm token cho lần tiếp theo sử dụng.
return response()->json([
"data" => $data
"token"=>csrf_token()
], 200);
Mình có thử làm request 30p 1 lần để lấy token mới. Nhưng cũng bị luôn cả cái request đó . Khổ cái là thỉnh thoảng nó mới bị và không bị lưu log.
Mình thấy cách của bạn có vẻ ổn. Hơn 1 tiếng nhưng chỉ có 1 request bị lỗi. Hình như không có cách khắc phục triệt để. Cảm ơn bạn nhé
@tuyenlaptrinh
Hoạc đơn giản hơn, thì bạn có thể loaij trừ function đó khỏi sự kiện check CSRF Token
ở app\Http\Middleware\VerifyCsrfToken.php
bạn thêm function vào biến
protected $except = [
//
];
# Không khuyến khích
@conghdql4 mục đích của mình khi dùng CSRF là để protect request nên khi excerpt thì coi như GET. Dù sao cũng cảm ơn bạn. Các của bạn kia ổn hơn rồi.
Bạn check xem cái request lỗi kia có truyền lên header
csrf
hay không. Nếu request lỗi không truyền lên headercsrf
thật thì bạn xem lại cơ chế lấycsrf
ở dưới làm js mỗi khi setInterval xem sao. Trước đây mình dùng hàm setInterval có bị lỗi lack memory một lần thì phải@simple1805 Mình thấy trong request header có token, post data cũng có token.