Tôi đang làm việc trên một ứng dụng web (J2EE) và tôi muốn biết các tùy chọn có sẵn để xử lý bài đăng kép từ trình duyệt.Làm cách nào để ngăn người dùng đăng dữ liệu nhiều lần trên trang web
Các giải pháp mà tôi đã nhìn thấy và sử dụng trong quá khứ đều là client-side:
- Vô hiệu hóa nút gửi ngay sau khi người dùng nhấp chuột nó.
- Làm theo mẫu POST-Redirect-GET để ngăn POST khi người dùng nhấp vào nút quay lại.
- Xử lý sự kiện onSubmit của biểu mẫu và theo dõi trạng thái gửi bằng JavaScript.
Tôi muốn triển khai giải pháp phía máy chủ nếu có thể. Có cách tiếp cận nào tốt hơn các phương pháp tôi đã đề cập ở trên hay giải pháp phía khách hàng tốt nhất?
Làm thế nào để bạn xử lý một người dùng nhấn nút quay lại (hầu hết các trình duyệt không tái yêu cầu), thay đổi dữ liệu trong biểu mẫu, và nộp cùng một "tấm vé" một lần nữa? – JeremyWeir
Bạn không thể ngăn người dùng gửi lại yêu cầu mới với cùng một vé, nhưng bạn có thể từ chối yêu cầu đó ở phía máy chủ, với lỗi "Yêu cầu trùng lặp". – zigdon
Phải, nhưng mọi người làm điều đó có chủ đích - gửi một biểu mẫu, nhấn lại vì họ biết họ cần sửa lại điều gì đó, gửi lại biểu mẫu. Việc sử dụng hợp pháp nút quay lại của trình duyệt để chỉnh sửa bản ghi sẽ dẫn đến lỗi. – JeremyWeir