419 bài đăng laravel ajax trạng thái không xác định

1. Mô tả vấn đề

Khi sử dụng  $. ajax   để thực hiện đăng dữ liệu về bộ điều khiển laravel xử lý thì nhận được lỗi “419 [trạng thái không xác định]” như hình bên dưới.

Hình 1. Mô tả lỗi 419 [không rõ trạng thái]

2. Cách giải quyết

Để giải quyết vấn đề này, tôi đã thêm _token. “{{ csrf_token[] }} vào phần dữ liệu của hàm ajax như sau.

$.ajax[{
		type: "POST",
		url: "/storecontact/",
		
		data: { 
			_token: "{{ csrf_token[] }}",
			txt_name: 'nosomovo',
			txt_email: 'nosomovo@gmail.com',
			txt_phone: '0376699605',
			txt_title: 'test',
			city_id: 0,
			txt_messages: 'This is test content',
			status: 0
		},
		success: function [$res]{
			
		},
		dataType: 'json'
}];

Hy vọng hữu ích với bạn

Nosomovo

Chia sẻ lên

Nosomovo

nosomovo. XYZ

Vấn đề. Khi cố gắng gửi dữ liệu biểu mẫu, dữ liệu biểu mẫu đăng nhập, dữ liệu biểu mẫu đăng ký, đăng yêu cầu hoặc tải hình ảnh lên máy chủ bằng ứng dụng được phát triển trong Ajax, jQuery hoặc Laravel, bạn sẽ gặp phải lỗi 419 Page Expired

Bố cục trang lỗi có thể khác nhau giữa các phiên bản khung, nhưng mã lỗi [419] và thông báo lỗi [Page Expired] giống nhau. Thông báo lỗi chi tiết như bên dưới

Mã trạng thái. 419 trạng thái không xác định

Mã trạng thái. 419 trạng thái không xác định

419 [tình trạng không rõ]

419 [tình trạng không rõ]

419 [không rõ trạng thái laravel postman]

419 lỗi ajax laravel

Uncaught [trong lời hứa] Lỗi. Yêu cầu không thành công với mã trạng thái 419

Mã thông báo CSRF không khớp ngoại lệ laravel ajax

ấu trùng 5. 5. 419 trạng thái không xác định

419. TRANG ĐÃ HẾT HẠN

419. TRANG ĐÃ HẾT HẠN

419
Xin lỗi, phiên của bạn đã hết hạn.
Vui lòng làm mới và thử lại.

419. Xin lỗi, phiên của bạn đã hết hạn. Vui lòng làm mới và thử lại

419
很抱歉,您的Session已过期,请刷新后再试一次。

419。很抱歉,您的Session已过期,请刷新后再试一次。

Thực hiện theo các bước giải pháp bên dưới để khắc phục lỗi 419 Page Expired hoặc Session Expired hoạt động với laravel 7, 6, 5. 5. 5, 5, 4 phiên bản

Tóm tắt nội dung

Nguyên nhân tiềm ẩn
Giải pháp 1. Kiểm tra giá trị SESSION_DOMAIN trên. tệp env
Giải pháp 2. Tải lại/Làm mới trang
Giải pháp 3. Xóa bộ nhớ cache và cấu hình
Giải pháp 4. Kiểm tra Xác minh CSRF
Giải pháp 5. Sửa đổi mã
Giải pháp 6. Vô hiệu hóa mã thông báo CSRF
Giải pháp 7. Tạo khóa ứng dụng mới

419 Mã trạng thái HTTP cho biết rằng xác thực không thành công đối với yêu cầu được xác thực trước đó hoặc khóa/mã thông báo xác thực đã hết hạn. Nếu bạn nhìn vào các mã trạng thái HTTP tiêu chuẩn, bạn sẽ không tìm thấy nó ở đó, bằng cách nào đó, bạn có thể coi đó là một giải pháp thay thế cho 401 nếu mã trạng thái trái phép. Vì vậy, điều này có nghĩa là khi bạn gặp lỗi Trang 419 đã hết hạn, điều này có nghĩa là máy chủ đang cố cho bạn biết rằng xác thực của bạn cho một yêu cầu cụ thể đã hết hạn

Theo tài liệu của Laravel, Cross-site request forgeries [CSRF] là một kiểu 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 tính năng bảo mật giúp bạn bảo vệ trang web của mình khỏi CSRF

Giả sử bạn đã truy cập trang đăng nhập của ứng dụng Laravel trong trình duyệt của mình và bạn nhận được cuộc gọi từ bạn của mình. Bạn đang bận nói chuyện với bạn bè và quên đăng nhập vào ứng dụng và trang ở đó khá lâu. Bạn quay trở lại nơi bạn đã rời đi, bạn điền vào biểu mẫu và gửi, lỗi 419 Trang đã hết hạn sẽ hiển thị

Nếu bạn kiểm tra trang biểu mẫu đăng nhập hoặc xem mã nguồn trong trình duyệt, sẽ có một trường nhập ẩn với một chuỗi dài cho mã thông báo CSRF, chịu trách nhiệm bảo vệ chống lại CSRF. Laravel tự động thêm phần mềm trung gian mã thông báo cho người dùng để ngăn chặn các cuộc tấn công CSRF. Khi bạn rời khỏi màn hình máy tính và bận nói chuyện với bạn bè, mã thông báo đã hết hạn và yêu cầu của bạn bị từ chối với mã trạng thái 419 HTTP

Nguyên nhân tiềm ẩn

  • Không gửi mã thông báo CSRF trong yêu cầu bài đăng của bạn hoặc gửi biểu mẫu và sử dụng phần mềm trung gian verifyCSRF
  • Một số vấn đề với phiên
  • Mất quá nhiều thời gian trong việc gửi yêu cầu
  • Giả mạo trường mã thông báo ẩn
  • Cài đặt phiên không được định cấu hình đúng trong tệp cấu hình phiên
  • Cơ chế khung nội bộ được gọi là bảo vệ CSRF
  • Lỗi xác minh mã thông báo CSRF
  • Phiên đã hết hạn do bộ nhớ cache cũ
  • Quyền đối với tệp và thư mục Laravel không chính xác
  • Cài đặt phiên Laravel không chính xác
  • Laravel không khớp. khóa ứng dụng env
  • Xung đột phụ thuộc Npm hoặc Composer
  • Thiếu mã thông báo CSRF trong biểu mẫu của bạn

Giải pháp 1. Kiểm tra giá trị SESSION_DOMAIN trên. tập tin env

Điều này thường xảy ra khi bạn đang làm việc với các môi trường phát triển khác nhau. Giá trị đang được sử dụng trên “config/session. php”, vì vậy bạn có thể kiểm tra xem có giá trị thủ công nào được đặt ở đó bởi người khác trong nhóm của bạn không. Xác minh rằng cấu hình cho tên miền và cookie được thực hiện đúng cách trong tệp cấu hình phiên. Thử thêm SESSION_DOMAIN=mydomain. đến với bạn. env, sau đó xóa bộ nhớ cache của bạn

Nếu bạn đang sử dụng trình điều khiển phiên tệp để lưu trữ phiên trong bộ nhớ/khung/phiên, bạn có thể gặp sự cố về quyền với thư mục/storage

Giải pháp 2. Tải lại/Làm mới trang

Tải lại/Làm mới trình duyệt của bạn bằng CTRL + F5 để nhận mã thông báo mới hoặc bạn có thể thỉnh thoảng phát triển ứng dụng bằng Javascript để làm mới mã thông báo

Giải pháp 3. Xóa bộ nhớ cache và cấu hình

Kiểm tra và xóa bộ đệm bằng cách thực hiện lệnh bên dưới trong terminal.
______1
Điều này phổ biến trong quá trình phát triển cục bộ do cấu hình thay đổi liên tục.

Giải pháp 4. Kiểm tra Xác minh CSRF

Laravel tự động tạo “mã thông báo” CSRF cho mỗi phiên người dùng đang hoạt động do ứng dụng quản lý. Mã thông báo này được sử dụng để xác minh rằng người dùng được xác thực là người thực sự đưa ra yêu cầu đối với ứng dụng. Kiểm tra kỹ xem bạn đã bao gồm @csrf và phương thức biểu mẫu chính xác trong. Chỉ thị nên được thêm ngay sau khi mở thẻ


@csrf
...

Đã bao gồm @csrf và phương thức biểu mẫu chính xác trong

Hoặc lỗi bắt nguồn từ một lần đăng nhập, hãy nhớ kiểm tra mã thông báo CSRF [trình duyệt] được lưu trữ cục bộ với mã thông báo trong cơ sở dữ liệu cho tài khoản của bạn và đảm bảo chúng giống nhau

Ngoài ra, bạn có thể tạo đầu vào mã thông báo theo cách thủ công, sử dụng phương thức csrf_token[]. Kết quả sẽ giống hệt nhau


Giải pháp 5. Sửa đổi mã

Lỗi trạng thái Laravel 419 chỉ được liên kết với ủy quyền mã thông báo. Thêm đoạn mã dưới đây vào tiêu đề của yêu cầu Ajax.

Thêm giữ mã bên dưới vào cuộc gọi ajax của bạn

$.ajaxSetup[{
headers: {
'X-CSRF-TOKEN': $['meta[name="csrf-token"]'].attr['content']
}
}];

Giải pháp 6. Vô hiệu hóa mã thông báo CSRF

Đóng phần mềm trung gian web của VerifyCsrfToken. [Trong ứng dụng\Http\Kernel. php, tìm kiếm trên web để tìm VerifyCsrfToken, nhận xét hoặc xóa nó] và đóng CSRF hoàn toàn

Làm cách nào để xử lý trang 419 hết hạn trong laravel?

419. trang lỗi này có nghĩa là vấn đề bảo mật của laravel, điều đó có nghĩa là trường mã thông báo csrf không được sử dụng đúng cách. hãy sử dụng {{csrf_field}} và vấn đề của bạn sẽ được giải quyết.

Lỗi 419 là gì?

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

Chủ Đề