Ngăn chặn tài liệu đã hết hạn tin nhắn và chỉ hiển thị trang đã hết hạn?


13

Khi tôi gửi biểu mẫu và sau đó nhấn lại, đôi khi tôi nhận được thông báo "Tài liệu hết hạn" thay vì trang cuối cùng.

nhập mô tả hình ảnh ở đây

Tôi đã từng nhận được hộp thông báo gây phiền nhiễu sau đây (hiện xuất hiện sau khi nhấp vào "Thử lại"):

nhập mô tả hình ảnh ở đây

Bây giờ, tôi làm biết phương tiện này và tại sao Firefox cho thấy thông báo này. Tuy nhiên, tôi muốn chỉ xem trang được xem lần cuối thay vào đó - giống như nó đã được hiển thị một giây trước. Không có cửa sổ bật lên và không tải lại để phản ánh trạng thái mới của máy chủ. (Có thể một thanh thông tin nhỏ sẽ tốt, nhưng nó không cần thiết cho tôi).

Trường hợp sử dụng: Hãy tưởng tượng tôi đã đăng nhập vào một trang web tôi thường xuyên sử dụng và sau khi nhấn Enter tôi thấy trong khóe mắt tôi có một tiêu đề tin tức trên trang đăng nhập. Tôi muốn nhấp lại và xem trang chính xác mà tôi đã thấy cách đây một giây để nhấp vào tiêu đề. Nếu tôi xem trang trước đã đăng nhập hoặc chỉ cần tải lại, tôi có thể nhận được các tiêu đề (ngẫu nhiên) khác nhau.

Vậy làm cách nào để loại bỏ hoàn toàn các thông báo "Tài liệu hết hạn" và "Xác nhận" và khiến Firefox chỉ hiển thị vị trí cuối cùng được lưu trong bộ nhớ cache sau khi gửi biểu mẫu POST? about:configcài đặt, tiện ích mở rộng, thủ thuật proxy đều ổn.


3
Bạn đang hỏi làm thế nào để hiển thị mục nhập bộ đệm của tài liệu không được lưu trong bộ nhớ cache. Điều đó là không thể.
paa

3
Chà, sau đó là phần mở rộng Tôi đang hỏi làm thế nào để Firefox cũng lưu trữ tài liệu :-).
jdm

1
Tôi gặp phải điều này rất nhiều khi tất cả những gì tôi đang cố gắng làm là sao lưu thông qua lịch sử duyệt web để đến một nơi nào đó trước khi sự cố xảy ra. Có một cái gì đó để vượt qua rào cản này sẽ rất hữu ích. Tôi biết tôi có thể sử dụng nút Lịch sử trên thanh công cụ chính, nhưng thường rất khó để tìm ra mục nào để chọn.
Joe

@jdm bạn đang hỏi 1) cách hiển thị trang tôi đã điều hướng theo cách tương tự tôi đã thấy trước đó; 2) và cách thoát khỏi hộp xác nhận của trình duyệt để gửi lại dữ liệu. Tôi đã hiểu rõ điều đó?
laika

@sjrco: 1) có, nhưng không phải 2). Tôi muốn có thể nhấp lại và xem những gì ở đó (cùng trạng thái trang) trước khi tôi điều hướng đi. (Điều đó hoạt động trên một số trang mặc dù chúng đã được sửa đổi bởi js hoặc người dùng điền vào biểu mẫu, vì vậy trình duyệt phải lưu tài liệu đã sửa đổi trong một số trường hợp). Tôi không muốn trình duyệt gửi lại dữ liệu một cách âm thầm. Tuy nhiên, tôi muốn chặn các hộp thoại phương thức khi nó không gửi lại dữ liệu.
jdm

Câu trả lời:


2

Công cụ Firefox không (hoặc không nên) lưu trữ trạng thái cuối cùng của tài liệu, chỉ bản thân tài liệu HTML nếu máy chủ cho phép lưu vào bộ đệm. Opera đã có (hoặc có thể vẫn còn) tính năng này, nhưng nó đã gây ra nhiều vấn đề đau đầu về bảo mật cho các nhà khai thác trang web.

RFC 2616 tuyên bố:

13.4 Khả năng đáp ứng

Trừ khi bị ràng buộc cụ thể bởi chỉ thị kiểm soát bộ đệm (phần 14.9), hệ thống bộ đệm có thể luôn lưu trữ phản hồi thành công (xem phần 13.8) dưới dạng mục nhập bộ đệm, CÓ THỂ trả lại mà không cần xác thực nếu nó còn mới và CÓ THỂ trả lại sau khi xác thực thành công .

Ngày nay, rất nhiều trang web sử dụng tiêu đề kiểm soát bộ đệm trên tất cả các phản hồi được tạo bởi máy chủ để tránh các vấn đề về bộ đệm. Ngay cả khi bạn yêu cầu Firefox cung cấp cho bạn tài liệu ở trạng thái cũ, trên phần lớn các trang web nếu không hoặc không nên hoạt động. Giải pháp an toàn nhất và trong tương lai sẽ là yêu cầu chủ sở hữu trang web viết mã trang web của họ đúng cách.


1
Nhưng nó lưu cache trạng thái cuối cùng, ít nhất là trong một số trường hợp. Hãy thử điều này: gist.github.com/jdmansour/5578079 . Ít nhất DOM được bảo tồn.
jdm

1
Lịch sử và bộ nhớ cache không giống nhau. Xem phần 13.13 của cùng một RFC . Nút quay lại yêu cầu hiển thị lại mục nhập lịch sử, không phải mục nhập bộ đệm. Opera nói đúng; Firefox là sai. Bất cứ ai tuyên bố đây là một tính năng "bảo mật" đều là ngu ngốc. Bạn luôn có thể sử dụng "mở trong tab mới", sau đó đóng tab mới để xem trang trước mà không cần máy chủ biết rằng bạn đã làm như vậy. Một nút quay lại hoạt động đúng nên có chính xác hiệu ứng đó.

2

Để loại bỏ tất cả các thông báo này, hãy thêm các dòng PHP sau vào đầu tất cả các tập lệnh của bạn:

tiêu đề ("Hết hạn: Thứ bảy, ngày 1 tháng 1 năm 2000 00:00:00 GMT"); tiêu đề ("Sửa đổi lần cuối:" .gmdate ("D, d MYH: i: s"). "GMT"); tiêu đề ("Kiểm soát bộ đệm: hậu kiểm = 0, kiểm tra trước = 0", sai); session_cache_limiter ("phải xác nhận lại");


2
Tôi không chắc chắn @jdm có quyền kiểm soát (các) trang họ đang nói đến.
Valmiky Arquissandas

2

Câu trả lời là trên https://support.mozilla.org/fr/questions/1010942 : chỉ cần kiểm tra Công cụ-> Tùy chọn-> Ghi đè Quản lý bộ đệm tự động.


Đây là nó! Cài đặt nằm dưới Công cụ / Tùy chọn / Nâng cao / Mạng / Ghi đè quản lý bộ đệm tự động. Không chắc chắn nếu nó hoạt động cho tất cả các trường hợp "Tài liệu hết hạn", nhưng nó hoạt động cho cái tôi có, nơi tôi không thể Xem Nguồn của phản hồi POST.
RomanSt

Điều này sẽ không có bất kỳ ảnh hưởng nào đến vấn đề này, vì nó chỉ cho phép bạn đặt kích thước bộ đệm: support.mozilla.org/en-US/questions/1037647 Tôi tự hỏi kích thước bộ đệm được xác định tự động là gì nếu điều này có ích .. .
Nickolay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.