Làm cách nào để loại bỏ lỗi 419 trong laravel?

Lỗi Laravel hết hạn trang 419 xảy ra khi mã thông báo CSRF hợp lệ bị thiếu trong yêu cầu đăng hoặc khi trang mất quá nhiều thời gian để gửi yêu cầu đăng dẫn đến việc mã thông báo CSRF hết hạn

CSRF hoặc Cross-Site Request Forgery là một loại khai thác độc hại theo đó các lệnh trái phép được thực hiện thay mặt cho người dùng được xác thực. Laravel Framework có một cơ chế bên trong để bảo vệ CSRF được bật theo mặc định cho tất cả các yêu cầu POST, PUT, PATCH và DELETE trong các tuyến web. Mã thông báo CSRF là một giá trị bí mật mà máy chủ do máy chủ tạo ra và được kiểm tra trong các yêu cầu HTTP POST, PUT, PATCH và DELETE tiếp theo do máy khách thực hiện

Để khắc phục lỗi hết hạn trang 419 trong laravel, chúng tôi phải sử dụng mã thông báo CSRF trong yêu cầu đăng bài của mình. Mã ví dụ dưới đây cho biết cách sử dụng mã thông báo CSRF trong biểu mẫu để thực hiện yêu cầu POST


	@csrf
	
	Save

The blade template has a built-in directive @csrf that will generate a hidden HTML input containing the token. The @csrf directive should be added inside the tag. @csrf is equivalent to:

Đối với yêu cầu ajax, giải pháp hơi khác một chút. Chúng tôi đang thêm mã thông báo CSRF vào tiêu đề của yêu cầu ajax. Đối với điều này, trước tiên, chúng tôi thêm csrf_token vào thẻ meta như ví dụ bên dưới


    

	function sendPostRequest[]{
		var data = {
			name: $["#name"].val[]
		};
		var headers = {
    		'X-CSRF-TOKEN': $['meta[name="csrf-token"]'].attr['content']
		}

		$.ajax[{
    		url: "/save",
    		type: "post",
    		headers: headers,
    		data: data,
    		success:function[res]{
    			
    		}
		}];
	}

Sau đó, chúng tôi lấy mã thông báo từ thẻ meta và thêm vào tiêu đề của yêu cầu ajax

Vô hiệu hóa Bảo vệ CSRF cho một số tuyến đường

Theo mặc định, phần mềm trung gian App\Http\Middleware\VerifyCsrfToken được bao gồm trong nhóm phần mềm trung gian web. Vì vậy, phần mềm trung gian này sẽ tự động kiểm tra tất cả các yêu cầu POST trong các tuyến web và xác minh rằng mã thông báo trong yêu cầu khớp với mã thông báo được lưu trữ trong phiên. Khi hai mã thông báo này khớp với nhau, chúng tôi biết rằng yêu cầu được bắt đầu bởi một người dùng đã được xác thực

Trong một số trường hợp, chúng tôi có thể muốn loại trừ một tập hợp các tuyến khỏi bảo vệ CSRF. Ví dụ: nếu chúng tôi đang làm việc với Stripe để thanh toán và chúng tôi có thể đang sử dụng hệ thống webhook của họ. Trong trường hợp này, chúng tôi sẽ cần loại trừ các tuyến Stripe khỏi bảo vệ CSRF

Chúng tôi có thể tắt bảo vệ CSRF cho các nhóm tuyến hoặc các tuyến cụ thể trong laravel. Đối với phần mềm trung gian App\Http\Middleware\VerifyCsrfToken mở này. Trong VerifyCsrfToken. php, chúng ta có thể thêm các nhóm tuyến hoặc các tuyến cụ thể trong một mảng để loại trừ khỏi bảo vệ CSRF trong biến mảng $ngoại trừ.  

// /app/Http/Middleware/VerifyCsrfToken.php
class VerifyCsrfToken extends Middleware
{
    protected $except = [
        'payments/*',  // exclude all URLs with prefix payment/
        'product/add' // exclude exact URL
    ];
}

Phần kết luận

Bảo vệ CSRF được bật theo mặc định cho tất cả các yêu cầu POST trong các tuyến web trong laravel. Chúng tôi phải chuyển Mã thông báo CSRF do máy chủ tạo cùng với tất cả các yêu cầu đăng và nó sẽ được xác minh bởi phần mềm trung gian VerifyCsrfToken. Lệnh blade @csrf sẽ tạo đầu vào HTML ẩn có chứa mã thông báo bên trong biểu mẫu.  

Hôm nay, Chúng tôi muốn chia sẻ với các bạn trang 419 hết hạn. Trong bài đăng này, chúng tôi sẽ chỉ cho bạn các Lỗi yêu cầu phổ biến của Laravel, hãy nghe trang laravel 419 hết hạn chuyển hướng để đăng nhập, chúng tôi sẽ cung cấp cho bạn bản demo và ví dụ để thực hiện. Trong bài đăng này, chúng ta sẽ tìm hiểu về Các ví dụ về Laravel CSRF Protection Token với một ví dụ

cách giải quyết vấn đề trang 419 hết hạn trong laravel 7?

nội dung

Trong bài đăng lớn này, tôi sẽ cung cấp cho bạn giải pháp tốt nhất về lỗi hết hạn trang 419 trong ứng dụng web laravel

Mỗi lần tôi phải đối mặt với “Trang đã hết hạn do không hoạt động. Vui lòng làm mới và thử lại”. lỗi trong ứng dụng web Laravel. Sự cố này là do csrf_token gây ra. Do đó, sau đây tôi đã thêm 2 giải pháp chính tốt nhất để kiểm tra lỗi này cũng như áp dụng theo một số yêu cầu chính của bạn

Giải pháp 1

Nếu bạn gặp lỗi sau khi gửi biểu mẫu trong laravel thì bạn bắt buộc phải thêm trường CSRF vào biểu mẫu của mình như Sau

    @csrf
    .....

Giải pháp 2

Nếu bạn gặp lỗi sau khi gọi jQuery AJAX thì bạn cần thêm tiêu đề như Đang theo dõi trong thẻ meta

Trong thẻ đầu của bạn


Và sau đó, bạn cần thêm Mã nguồn sau vào thẻ tập lệnh của mình
$.ajaxSetup[{
    headers: {
        'X-CSRF-TOKEN': $['meta[name="csrf-token"]'].attr['content']
    }
}];

Trong một số điều kiện cũng xảy ra sự cố Bộ nhớ cache, Do đó, chúng tôi bắt buộc phải xóa nó

Để xóa Laravel Cache, View, Routes trong Laravel, hãy kiểm tra Sau đây

Vì tôi sẽ đề cập đến Bài đăng này với ví dụ Làm việc trực tiếp để phát triển bộ đệm cấu hình rõ ràng của laravel, do đó, bộ đệm chế độ xem rõ ràng của laravel cho ví dụ này như sau bên dưới

Làm cách nào để ngăn trang 419 hết hạn trong laravel?

điều kiện tiên quyết
Tạo một biểu mẫu trong Laravel để giải quyết vấn đề hết hạn trang 419
Tạo Trình điều khiển để xử lý biểu mẫu mà không cần mã thông báo CSRF
Thêm các tuyến đường trong Laravel 8
Loại trừ Tuyến đường khỏi Xác minh Mã thông báo CSRF trong Laravel
Kiểm tra kết quả của vấn đề đã hết hạn trang 419
Loại trừ tuyến đường được tham số hóa khỏi mã thông báo CSRF
Phần kết luận

Tại sao trang laravel 419 hết hạn?

Tuy nhiên, bạn có thể gặp lỗi hết hạn 419/trang vì hai lý do. Trang mất quá nhiều thời gian để gửi yêu cầu và do đó, mã thông báo hết hạn [trang hết hạn]. Có thể bạn đã không thêm mã lưỡi @csrf vào biểu mẫu của mình, vì vậy mã thông báo mong đợi từ biểu mẫu của bạn không xuất hiện.

Làm cách nào để tắt CSRF trong laravel?

A. Bạn có thể tắt CSRF Laravel từ Ứng dụng/Http/Kernel. php bằng cách xóa App\Http\Middleware\VerifyCsrfToken khỏi mảng $middleware .

Lỗi 419 có nghĩa là gì?

Mã trạng thái HTTP 419 có nghĩa là gì? . a session has expired while processing a post request.

Chủ Đề