¿Prevenir el mensaje "documento caducado" y solo mostrar la página caducada?

13

Cuando envío un formulario y luego presiono hacia atrás, a veces aparece el mensaje "Documento caducado" en lugar de la última página.

ingrese la descripción de la imagen aquí

Solía ​​recibir el siguiente cuadro de mensaje molesto (que ahora aparece después de hacer clic en "Intentar de nuevo"):

ingrese la descripción de la imagen aquí

Ahora, yo no sé lo que esto significa y por qué Firefox muestra este mensaje. Sin embargo, solo quiero ver la última página vista, tal como se mostró hace un segundo. Sin ventanas emergentes y sin recarga para reflejar el nuevo estado del servidor. (Tal vez una pequeña barra de información estaría bien, pero no es necesario para mí).

Caso de uso: imagine que inicié sesión en un sitio que uso regularmente, y después de presionar Entrar veo en el rabillo del ojo un titular de noticias en la página de inicio de sesión. Me gustaría hacer clic de nuevo y ver la página exacta que vi hace un segundo para hacer clic en el título. Si veo la página de inicio de sesión o simplemente la vuelvo a cargar, podría obtener titulares diferentes (aleatorios).

Entonces, ¿cómo me deshago completamente de los mensajes "Documento caducado" y "Confirmar" y hago que Firefox simplemente muestre la última ubicación almacenada en caché después de enviar un formulario POST? about:configconfiguraciones, extensiones, trucos de proxy están bien.

jdm
fuente
3
Está preguntando cómo mostrar la entrada de caché de un documento no almacenado en caché. No es posible.
paa
3
Bueno, entonces, por extensión, estoy preguntando cómo hacer que Firefox también guarde en caché el documento :-).
jdm
1
Encuentro esto mucho cuando todo lo que intento hacer es hacer una copia de seguridad a través del historial de navegación para llegar a algún lugar antes de que ocurra el problema. Tener algo para superar este obstáculo sería muy útil. Sé que puedo usar el botón Historial en la barra de herramientas principal, pero a menudo es difícil determinar qué entrada elegir.
Joe
@jdm estás preguntando 1) cómo mostrar la página que he navegado de la misma manera que la había visto antes; 2) y cómo deshacerse del cuadro de confirmación del navegador para reenviar los datos. ¿Entendí eso claramente?
laika
@sjrco: 1) sí, pero no 2). Me gustaría poder hacer clic de nuevo y ver qué había allí (mismo estado de página) antes de salir. (Eso funciona en algunas páginas a pesar de que han sido modificadas por js, o el usuario completó formularios, por lo que el navegador debe guardar el documento modificado en algunas circunstancias). No quiero que el navegador reenvíe silenciosamente los datos. Sin embargo, quiero suprimir los cuadros de diálogo modales cuando no reenvía datos.
jdm

Respuestas:

2

El motor de Firefox no (o no debería) almacenar en caché el último estado de los documentos, solo el documento HTML en sí mismo si el servidor permite el almacenamiento en caché. Opera tenía (o quizás todavía tiene) esta característica, pero ha causado muchos dolores de cabeza de seguridad para los operadores de sitios web.

RFC 2616 declara:

13.4 Caché de respuesta

A menos que esté específicamente restringido por una directiva de control de caché (sección 14.9), un sistema de almacenamiento en caché PUEDE siempre almacenar una respuesta exitosa (ver sección 13.8) como una entrada de caché, PUEDE devolverla sin validación si es nueva y PUEDE devolverla después de una validación exitosa .

En la actualidad, muchos sitios emplean el encabezado de control de caché en todas las respuestas generadas por el servidor para evitar problemas de almacenamiento en caché. Incluso si consigue que Firefox le entregue el documento en el estado anterior, en la mayoría de los sitios no funcionaría o no debería funcionar de todos modos. La solución más segura y a prueba de futuro sería pedirle al propietario del sitio web que codifique su sitio web correctamente.

Janos Pasztor
fuente
1
Pero sí almacena el último estado, al menos en algunas circunstancias. Pruebe esto: gist.github.com/jdmansour/5578079 . Al menos se conserva el DOM.
jdm
1
Historia y caché no son lo mismo. Consulte la sección 13.13 del mismo RFC . El botón Atrás solicita una nueva visualización de una entrada de historial, no una entrada de caché. Opera tiene razón; Firefox está mal. Cualquiera que afirme que esta es una característica de "seguridad" está siendo estúpido. Siempre puede usar "abrir en una pestaña nueva", luego cerrar la pestaña nueva para ver la página anterior sin que el servidor sepa que lo ha hecho. Un botón de retroceso que funcione correctamente debería tener exactamente ese efecto.
2

Para deshacerse de todos estos mensajes, agregue las siguientes líneas PHP al comienzo de todos sus scripts:

encabezado ("Caduca: sáb, 01 de enero de 2000 00:00:00 GMT"); encabezado ("Última modificación:" .gmdate ("D, d MYH: i: s"). "GMT"); header ("Cache-Control: post-check = 0, pre-check = 0", false); session_cache_limiter ("must-revalidate");

user349823
fuente
2
No estoy seguro de que @jdm tenga control sobre las páginas de las que están hablando.
Valmiky Arquissandas
2

La respuesta está en https://support.mozilla.org/fr/questions/1010942 : simplemente verifique Herramientas-> Opciones-> Invalidar la administración automática de caché.

Bret
fuente
¡Eso es todo! La configuración está en Herramientas / Opciones / Avanzado / Red / Anular administración automática de caché. No estoy seguro si funciona para todos los casos de "Documento caducado", pero funcionó para el que tenía, donde no pude ver el origen de una respuesta POST.
RomanSt
Esto no debería tener ningún efecto sobre este problema, ya que solo le permite establecer el tamaño de la caché: support.mozilla.org/en-US/questions/1037647 Me pregunto cuál sería el tamaño de caché determinado automáticamente si esto ayuda ... .
Nickolay