Prevenire il messaggio "documento scaduto" e mostrare solo la pagina scaduta?


13

Quando invio un modulo e poi premo indietro, a volte viene visualizzato il messaggio "Documento scaduto" anziché l'ultima pagina.

inserisci qui la descrizione dell'immagine

Invece ho usato la seguente fastidiosa finestra di messaggio (che ora appare dopo un clic su "Riprova"):

inserisci qui la descrizione dell'immagine

Ora, io non so che cosa questo significa e perché Firefox mostra questo messaggio. Tuttavia, voglio solo vedere l'ultima pagina visualizzata invece, proprio come è stata visualizzata un secondo fa. Nessun popup e nessun ricaricamento per riflettere il nuovo stato del server. (Forse una piccola barra informativa sarebbe carina, ma per me non è necessaria).

Caso d'uso: immagina di aver effettuato l'accesso a un sito che utilizzo regolarmente e dopo aver premuto Invio vedo nell'angolo dell'occhio un titolo di notizie nella pagina di accesso. Vorrei fare clic indietro e vedere la pagina esatta che ho visto un secondo fa per fare clic sul titolo. Se visualizzo la prima pagina collegata o la ricarico, potrei ottenere titoli diversi (randomizzati).

Quindi, come posso eliminare completamente i messaggi "Documento scaduto" e "Conferma" e far sì che Firefox visualizzi semplicemente l'ultima posizione memorizzata nella cache dopo aver inviato un modulo POST? about:configimpostazioni, estensioni, trucchi proxy vanno bene.


3
Stai chiedendo come visualizzare la voce cache di un documento non memorizzato nella cache. Non è possibile.
paa,

3
Bene, quindi per estensione sto chiedendo come fare in modo che Firefox memorizzi anche il documento nella cache :-).
jdm,

1
Lo incontro molto quando tutto quello che sto cercando di fare è eseguire il backup attraverso la cronologia di navigazione per arrivare da qualche parte prima che si verificasse il problema. Avere qualcosa per superare questo blocco sarebbe molto utile. So di poter usare il pulsante Cronologia sulla barra degli strumenti principale, ma spesso è difficile capire quale voce scegliere.
Joe,

@jdm stai chiedendo 1) come visualizzare la pagina che ho navigato nello stesso modo in cui l'ho vista prima; 2) e come sbarazzarsi della casella di conferma del browser per inviare nuovamente i dati. L'ho capito chiaramente?
laika,

@sjrco: 1) sì, ma non 2). Mi piacerebbe poter fare clic indietro e vedere cosa c'era (stesso stato della pagina) prima di partire. (Funziona su alcune pagine anche se sono state modificate da js, o l'utente ha compilato i moduli, quindi il browser deve salvare il documento modificato in alcune circostanze). Non voglio che il browser rinvii silenziosamente i dati. Voglio però sopprimere le finestre di dialogo modali quando non rinvia i dati.
jdm,

Risposte:


2

Il motore Firefox non memorizza (o non dovrebbe) memorizzare nella cache l'ultimo stato dei documenti, ma solo il documento HTML stesso se il server consente la memorizzazione nella cache. Opera aveva (o forse ha ancora) questa funzione, ma ha causato molti mal di testa alla sicurezza per gli operatori di siti Web.

RFC 2616 afferma:

13.4 Cacheability di risposta

A meno che non sia specificamente vincolato da una direttiva di controllo della cache (sezione 14.9), un sistema di memorizzazione nella cache PU store sempre memorizzare una risposta corretta (vedere la sezione 13.8) come voce della cache, PUO 'restituirla senza convalida se è nuova e PU MAY restituirla dopo la convalida corretta .

Oggi molti siti utilizzano l'intestazione di controllo della cache su tutte le risposte generate dal server per evitare problemi di memorizzazione nella cache. Anche se ottieni Firefox per darti il ​​documento nel primo stato, sulla maggior parte dei siti se non funzionerebbe o non dovrebbe funzionare comunque. La soluzione più sicura e a prova di futuro sarebbe chiedere al proprietario del sito Web di codificare correttamente il proprio sito Web.


1
Ma memorizza nella cache l'ultimo stato, almeno in alcune circostanze. Prova questo: gist.github.com/jdmansour/5578079 . Almeno il DOM è conservato.
jdm,

1
Cronologia e cache non sono la stessa cosa. Vedi sezione 13.13 della stessa RFC . Il pulsante Indietro richiede una nuova visualizzazione di una voce della cronologia, non di una voce della cache. Opera ha ragione; Firefox è sbagliato. Chiunque affermi che questa è una funzionalità di "sicurezza" è stupido. Puoi sempre utilizzare "Apri in una nuova scheda", quindi chiudere la nuova scheda per visualizzare la pagina precedente senza che il server sappia che l'hai fatto. Un pulsante Indietro correttamente funzionante dovrebbe avere esattamente questo effetto.

2

Per sbarazzarsi di tutti questi messaggi aggiungi le seguenti righe PHP all'inizio di tutti i tuoi script:

header ("Scadenza: sab, 01 gen 2000 00:00:00 GMT"); header ("Ultima modifica:" .gmdate ("D, d MYH: i: s"). "GMT"); header ("Cache-Control: post-check = 0, pre-check = 0", false); session_cache_limiter ( "must-revalidate");


2
Non sono sicuro che @jdm abbia il controllo delle pagine di cui stanno parlando.
Valmiky Arquissandas,

2

La risposta è su https://support.mozilla.org/fr/questions/1010942 : basta selezionare Strumenti-> Opzioni-> Sostituisci gestione cache automatica.


Questo è! L'impostazione è in Strumenti / Opzioni / Avanzate / Rete / Sostituisci gestione cache automatica. Non sono sicuro che funzioni per tutti i casi di "Documento scaduto", ma ha funzionato per quello che avevo, in cui non ero in grado di visualizzare l'origine di una risposta POST.
Roman,

Ciò non dovrebbe avere alcun effetto su questo problema, poiché consente solo di impostare la dimensione della cache: support.mozilla.org/en-US/questions/1037647 Mi chiedo quale fosse la dimensione della cache determinata automaticamente se questo aiuta. .
Nickolay
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.