Empêcher le message «document expiré» et afficher simplement la page expirée?

13

Lorsque je soumets un formulaire et que j'appuie sur, je reçois parfois le message "Document expiré" au lieu de la dernière page.

entrez la description de l'image ici

Au lieu de cela, j'obtenais la boîte de message ennuyeuse suivante (qui apparaît maintenant après un clic sur "Réessayer"):

entrez la description de l'image ici

Maintenant, je ne sais ce que cela signifie et pourquoi Firefox affiche ce message. Cependant, je veux juste voir la dernière page consultée à la place - tout comme elle a été affichée il y a une seconde. Pas de popup et pas de rechargement pour refléter le nouvel état du serveur. (Peut-être qu'une petite barre d'informations serait bien, mais ce n'est pas nécessaire pour moi).

Cas d'utilisation: Imaginez que je me suis connecté à un site que j'utilise régulièrement, et après avoir appuyé sur Entrée, je vois dans le coin de l'œil un titre d'actualité sur la page de connexion. Je voudrais cliquer en arrière et voir la page exacte que j'ai vue il y a une seconde pour cliquer sur le titre. Si je regarde la première page connectée, ou simplement la recharge, je pourrais avoir des titres différents (randomisés).

Alors, comment puis-je me débarrasser complètement des messages "Document expiré" et "Confirmer" et que Firefox affiche simplement le dernier emplacement mis en cache après avoir soumis un formulaire POST? about:configles paramètres, les extensions, les astuces de proxy sont très bien.

jdm
la source
3
Vous demandez comment afficher l'entrée de cache d'un document non mis en cache. Ce n'est pas possible.
paa
3
Eh bien, par extension, je demande comment faire pour que Firefox cache également le document :-).
jdm
1
Je rencontre souvent cela lorsque tout ce que j'essaie de faire est de sauvegarder l'historique de navigation pour arriver quelque part avant que le problème ne se produise. Avoir quelque chose à franchir ce barrage serait très utile. Je sais que je peux utiliser le bouton Historique de la barre d'outils principale, mais il est souvent difficile de savoir quelle entrée choisir.
Joe
@jdm vous demandez 1) comment afficher la page que j'ai parcourue de la même manière que je l'ai vue auparavant; 2) et comment se débarrasser de la boîte de confirmation du navigateur pour renvoyer les données. Ai-je bien compris cela?
laika
@sjrco: 1) oui, mais pas 2). Je voudrais pouvoir cliquer en arrière et voir ce qui était là (même état de page) avant de partir. (Cela fonctionne sur certaines pages même si elles ont été modifiées par js ou par des formulaires remplis par l'utilisateur, le navigateur doit donc enregistrer le document modifié dans certaines circonstances). Je ne veux pas que le navigateur renvoie des données en silence. Je veux cependant supprimer les boîtes de dialogue modales quand il ne renvoie pas de données.
jdm

Réponses:

2

Le moteur Firefox ne met pas (ou ne devrait pas) mettre en cache le dernier état des documents, seulement le document HTML lui-même si le serveur autorise la mise en cache. Opera avait (ou a peut-être toujours) cette fonctionnalité, mais elle a causé de nombreux problèmes de sécurité pour les opérateurs de sites Web.

La RFC 2616 déclare:

13.4 Mise en cache de la réponse

À moins qu'il ne soit spécifiquement contraint par une directive de contrôle du cache (section 14.9), un système de mise en cache PEUT toujours stocker une réponse réussie (voir section 13.8) en tant qu'entrée de cache, PEUT la renvoyer sans validation si elle est fraîche, et PEUT la retourner après une validation réussie .

De nombreux sites utilisent aujourd'hui l'en-tête de contrôle du cache sur toutes les réponses générées par le serveur pour éviter les problèmes de mise en cache. Même si vous demandez à Firefox de vous donner le document dans l'ancien état, sur la majorité des sites, cela ne fonctionnerait pas ou ne devrait pas fonctionner de toute façon. La solution la plus sûre et la plus évolutive serait de demander au propriétaire du site Web de coder correctement son site Web.

Janos Pasztor
la source
1
Mais il cache le dernier état, au moins dans certaines circonstances. Essayez ceci: gist.github.com/jdmansour/5578079 . Au moins, le DOM est conservé.
jdm
1
L'histoire et le cache ne sont pas la même chose. Voir la section 13.13 du même RFC . Le bouton de retour demande un nouvel affichage d'une entrée d'historique, pas une entrée de cache. L'opéra a raison; Firefox a tort. Quiconque prétend que c'est une fonction de «sécurité» est stupide. Vous pouvez toujours utiliser "ouvrir dans un nouvel onglet", puis fermer le nouvel onglet pour voir la page précédente sans que le serveur sache que vous l'avez fait. Un bouton arrière fonctionnant correctement devrait avoir exactement cet effet.
2

Pour vous débarrasser de tous ces messages, ajoutez les lignes PHP suivantes au début de tous vos scripts:

en-tête ("Expire: Sam, 01 Jan 2000 00:00:00 GMT"); header ("Last-Modified:" .gmdate ("D, d MYH: i: s"). "GMT"); en-tête ("Cache-Control: post-check = 0, pre-check = 0", false); session_cache_limiter ("must-revalidate");

user349823
la source
2
Je ne suis pas sûr que @jdm ait le contrôle sur les pages dont ils parlent.
Valmiky Arquissandas
2

La réponse est sur https://support.mozilla.org/fr/questions/1010942 : il suffit de cocher Tools-> Options-> Override Automatic Cache Management.

Bret
la source
Ça y est ...! Le paramètre se trouve sous Outils / Options / Avancé / Réseau / Remplacer la gestion automatique du cache. Je ne sais pas si cela fonctionne pour tous les cas de «document expiré», mais cela a fonctionné pour celui que j'avais, où je ne pouvais pas voir la source d'une réponse POST.
RomanSt
Cela ne devrait pas avoir d'effet sur ce problème, car il vous permet uniquement de définir la taille du cache: support.mozilla.org/en-US/questions/1037647 Je me demande quelle était la taille du cache déterminée automatiquement si cela aide. .
Nickolay