Vâng, theo mặc định bất cứ khi nào bạn đang xử lý POST biểu mẫu, sau đó người dùng truy cập lại và sau đó làm mới thì họ sẽ thấy thông báo cho biết trình duyệt đang gửi lại dữ liệu. Nhưng nếu trang được đặt hết hạn ngay lập tức thì họ thậm chí sẽ không phải làm mới và họ sẽ thấy trang đã hết hạn khi họ quay lại.
Để tránh cả hai thư, có một vài điều cần thử:
1) Sử dụng biểu mẫu GET để thay thế. Nó phụ thuộc vào những gì bạn đang làm nhưng điều này không phải luôn luôn là một giải pháp tốt vì vẫn còn những hạn chế về kích thước trên một yêu cầu GET. Và thông tin được truyền trong chuỗi truy vấn không phải là tùy chọn an toàn nhất.
- hoặc -
2) Thực hiện chuyển hướng phía máy chủ đến một trang khác sau biểu mẫu POST.
Trông giống như một câu hỏi tương tự đã được trả lời ở đây:
Redirect with a 303 after POST to avoid "Webpage has expired": Will it work if there are more bytes than a GET request can handle?
Là một lựa chọn thứ ba ta có thể ngăn chặn người dùng từ đi trở lại trong trình duyệt của họ ở tất cả. Lần duy nhất tôi cảm thấy cần phải làm điều này là ngăn họ làm điều ngu ngốc như trả tiền hai lần. Mặc dù có các phương pháp phía máy chủ tốt hơn để xử lý điều đó. Nếu trang web của bạn sử dụng phiên thì bạn có thể ngăn họ thanh toán hai lần bằng cách tắt bộ nhớ cache đầu tiên trên trang thanh toán và cài đặt hết hạn ngay lập tức. Và sau đó bạn có thể sử dụng một lá cờ của một số loại được lưu trữ trong một phiên mà thực sự sẽ thay đổi hành vi của trang nếu bạn quay trở lại nó.
Nguồn
2009-10-16 19:59:07
tốt hơn sẽ được để thiết kế ứng dụng của bạn để nút quay lại có ý nghĩa hợp lý. Tôi thấy nó tức giận khi tôi 'không được phép' để sử dụng nút quay lại. – Peter
Peter, tôi đồng ý. Có những lúc (chẳng hạn như quy trình thanh toán của trang web thương mại điện tử) khi bạn có thể bị cám dỗ để ngăn người dùng quay trở lại. Tuy nhiên, có một giải pháp phía máy chủ tốt hơn cho vấn đề mà tôi đề xuất trong câu trả lời của tôi. –
@Peter, tôi hoàn toàn đồng ý, nhưng tôi đang xử lý quy trình làm việc để nút quay lại không áp dụng ở đây. – mkoryak