Asked Mar 12th, 1:25 p.m. 208 0 1
  • 208 0 1
0

Laravel 8 CSRF Token mismatch setInterval

Share
  • 208 0 1

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.

Avatar Quiet @simple1805
Mar 14th, 2:36 a.m.

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 header csrf thật thì bạn xem lại cơ chế lấy csrfở 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

+1
| Reply
Share
Avatar Tuyen Pham @tuyenlaptrinh
Mar 14th, 2:07 p.m.

@simple1805 Mình thấy trong request header có token, post data cũng có token.

0
| Reply
Share

1 ANSWERS


Answered Mar 14th, 5:11 a.m.
Accepted
+1

Ở 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);
Share
Avatar Tuyen Pham @tuyenlaptrinh
Mar 14th, 2:08 p.m.

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.

0
| Reply
Share
Avatar Tuyen Pham @tuyenlaptrinh
Mar 14th, 3:21 p.m.

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é

0
| Reply
Share
Avatar CongHD @conghdql4
Mar 15th, 12:51 a.m.

@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
0
| Reply
Share
Avatar Tuyen Pham @tuyenlaptrinh
Mar 16th, 3:10 p.m.

@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.

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.