Zablokować komunikat „dokument wygasł” i po prostu pokazać wygasłą stronę?

13

Kiedy przesyłam formularz, a następnie wciskam z powrotem, czasami pojawia się komunikat „Dokument wygasł” zamiast ostatniej strony.

wprowadź opis zdjęcia tutaj

Zamiast tego otrzymywałem następujące irytujące okno komunikatu (które teraz pojawia się po kliknięciu „Spróbuj ponownie”):

wprowadź opis zdjęcia tutaj

Teraz nie wiem, co to oznacza i dlaczego Firefox pokazuje ten komunikat. Chcę jednak zamiast tego zobaczyć ostatnio oglądaną stronę - tak jak była wyświetlona sekundę temu. Bez wyskakującego okienka i bez ponownego ładowania w celu odzwierciedlenia nowego stanu serwera. (Być może mały pasek informacyjny byłby miły, ale nie jest to dla mnie konieczne).

Przypadek użycia: Wyobraź sobie, że zalogowałem się na stronie, z której regularnie korzystam, a po naciśnięciu Enter widzę kątem oka nagłówek wiadomości na stronie logowania. Chciałbym kliknąć wstecz i zobaczyć dokładną stronę, którą widziałem przed chwilą, aby kliknąć nagłówek. Jeśli zobaczę zalogowaną stronę główną lub po prostu ją załaduję, mogę uzyskać inne (losowe) nagłówki.

Jak więc pozbyć się wiadomości „Dokument wygasł” i „Potwierdź” całkowicie, aby Firefox wyświetlał ostatnią lokalizację w pamięci podręcznej po przesłaniu formularza POST? about:configustawienia, rozszerzenia, sztuczki proxy są w porządku.

jdm
źródło
3
Pytasz, jak wyświetlić wpis w pamięci podręcznej dokumentu niebuforowanego. To nie jest możliwe.
paa
3
Pytam więc, jak sprawić, by Firefox również buforował dokument :-).
jdm
1
Często się z tym spotykam, gdy wszystko, co próbuję zrobić, to wykonać kopię zapasową historii przeglądania, aby dostać się gdzieś przed wystąpieniem problemu. Bardzo przydatne byłoby posiadanie czegoś, co umożliwiłoby obejście tej blokady. Wiem, że mogę użyć przycisku Historia na głównym pasku narzędzi, ale często trudno jest ustalić, który wpis wybrać.
Joe
@ jdm pytasz 1) jak wyświetlić stronę, do której się opuściłem, w taki sam sposób, w jaki widziałem ją wcześniej; 2) i jak pozbyć się pola potwierdzenia przeglądarki, aby ponownie wysłać dane. Czy zrozumiałem to jasno?
laika
@sjrco: 1) tak, ale nie 2). Chciałbym móc kliknąć wstecz i zobaczyć, co tam było (ten sam stan strony), zanim opuściłem nawigację. (Działa to na niektórych stronach, mimo że zostały one zmodyfikowane przez js lub użytkownik wypełnił formularze, więc przeglądarka musi w pewnych okolicznościach zapisać zmodyfikowany dokument ). Nie chcę, aby przeglądarka po cichu ponownie wysyła dane. Chcę jednak ukryć modalne okna dialogowe, gdy nie wysyła ponownie danych.
jdm

Odpowiedzi:

2

Silnik Firefox nie buforuje (lub nie powinien) buforować ostatniego stanu dokumentów, tylko sam dokument HTML, jeśli serwer pozwala na buforowanie. Opera miała (a może nadal ma) tę funkcję, ale spowodowała wiele problemów z bezpieczeństwem dla operatorów witryn.

RFC 2616 stwierdza:

13.4 Pamięć podręczna odpowiedzi

O ile nie jest to szczególnie ograniczone przez dyrektywę kontroli pamięci podręcznej (sekcja 14.9), system buforowania MOŻE zawsze przechowywać udaną odpowiedź (patrz sekcja 13.8) jako pozycję pamięci podręcznej, MOŻE zwrócić ją bez sprawdzania poprawności, jeśli jest świeża, i MOŻE zwrócić ją po pomyślnym sprawdzeniu poprawności .

Wiele witryn używa obecnie nagłówka kontroli pamięci podręcznej dla wszystkich odpowiedzi generowanych przez serwer, aby uniknąć problemów z buforowaniem. Nawet jeśli Firefox dostanie dokument w poprzednim stanie, w większości witryn, jeśli i tak nie będzie lub nie powinien działać. Najbezpieczniejszym i najbardziej przyszłościowym rozwiązaniem byłoby poproszenie właściciela witryny o prawidłowe kodowanie strony.

Janos Pasztor
źródło
1
Ale buforuje ostatni stan, przynajmniej w niektórych okolicznościach. Spróbuj tego: gist.github.com/jdmansour/5578079 . Przynajmniej DOM jest zachowany.
jdm
1
Historia i pamięć podręczna to nie to samo. Patrz sekcja 13.13 tego samego dokumentu RFC . Przycisk Wstecz żąda ponownego wyświetlenia pozycji historii, a nie pozycji pamięci podręcznej. Opera ma rację; Firefox się myli. Każdy, kto twierdzi, że jest to funkcja „bezpieczeństwa”, jest głupi. Zawsze możesz użyć opcji „otwórz w nowej karcie”, a następnie zamknij nową kartę, aby wyświetlić poprzednią stronę, bez informowania serwera o tym. Prawidłowo działający przycisk powrotu powinien mieć dokładnie taki efekt.
2

Aby pozbyć się tych wszystkich wiadomości, dodaj następujące wiersze PHP na początku wszystkich swoich skryptów:

nagłówek („Wygasa: sob., 01 stycznia 2000 00:00:00 GMT”); nagłówek („Last-Modified:” .gmdate („D, d MYH: i: s”). „GMT”); nagłówek („Kontrola pamięci podręcznej: kontrola końcowa = 0, kontrola wstępna = 0”, fałsz); session_cache_limiter („must-revalidate”);

użytkownik349823
źródło
2
Nie jestem pewien, czy @jdm ma kontrolę nad stronami, o których mówią.
Valmiky Arquissandas
2

Odpowiedź znajduje się na https://support.mozilla.org/fr/questions/1010942 : po prostu zaznacz Narzędzia-> Opcje-> Zastąp automatyczne zarządzanie pamięcią podręczną.

Bret
źródło
To jest to! Ustawienie znajduje się w obszarze Narzędzia / Opcje / Zaawansowane / Sieć / Zastąp automatyczne zarządzanie pamięcią podręczną. Nie jestem pewien, czy to działa we wszystkich przypadkach „Dokument wygasł”, ale działało w moim przypadku, w którym nie byłem w stanie wyświetlić źródła odpowiedzi POST.
RomanSt
Nie powinno to mieć żadnego wpływu na ten problem, ponieważ pozwala jedynie ustawić rozmiar pamięci podręcznej: support.mozilla.org/en-US/questions/1037647 Zastanawiam się, jaki byłby automatycznie określony rozmiar pamięci podręcznej, jeśli to pomogło .. ,
Nickolay