Yêu cầu thg 3 12, 2022 1:25 CH 285 0 1
  • 285 0 1
0

Laravel 8 CSRF Token mismatch setInterval

Chia sẻ
  • 285 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 Michael Scofield @simple1805
thg 3 14, 2022 2:36 SA

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

Avatar Tuyen Pham @tuyenlaptrinh
thg 3 14, 2022 2:07 CH

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

1 CÂU TRẢ LỜI


Đã trả lời thg 3 14, 2022 5:11 SA
Đã được chấp nhận
+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);
Chia sẻ
Avatar Tuyen Pham @tuyenlaptrinh
thg 3 14, 2022 2:08 CH

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.

Avatar Tuyen Pham @tuyenlaptrinh
thg 3 14, 2022 3:21 CH

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é

Avatar CongHD @conghdql4
thg 3 15, 2022 12:51 SA

@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
Avatar Tuyen Pham @tuyenlaptrinh
thg 3 16, 2022 3:10 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.

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí