2012-05-09 84 views
11

Estoy seguro de que todos conocen ese comportamiento. Rellena un formulario en la web y lo envía. Después del envío, usted reconoce que ha completado algunos datos incorrectos. Entonces, haces clic en el botón Atrás de los navegadores. Entonces, a veces el formulario todavía tiene los datos que ingresó (lo que espera en esta situación) y, a veces, no.¿Por qué a veces se borran los formularios HTML al hacer clic en el botón Atrás del navegador?

No pude encontrar ninguna conexión cuando se borra y cuando no.

Algunas de las respuestas que he encontrado en internet/stackoverflow:

  • en las conexiones HTTPS, formas están siempre aclaró
  • al utilizar sitios web dinámicos con sesiones, formas siempre se borran

Pero ambos de ellos están definitivamente equivocados. He visto sitios (como uno propio) que mantienen los datos del formulario después de que el navegador y están usando https y están usando sesiones.

Por favor, ¿alguien puede explicarme cómo los navegadores manejan esto?

Por cierto: mi tarea es asegurarme de que los datos del formulario son no borrados.

Respuesta

6

No puedo proporcionar la respuesta definitiva para todos los escenarios.

Como desarrollador web, aquí es la regla general que sigo para los sitios que desarrollo, para lograr el objetivo de no dejar que el usuario pierde datos:

  • Desactivar el almacenamiento en caché (a través de las cabeceras HTTP) en la página querer retenido
  • Capture todos los datos en la sesión (u otro almacenamiento temporal) cuando se envíe el formulario.
  • Si el usuario navega hacia atrás, el navegador solicita una nueva versión de la página (porque la configuró para que no tenga nunca caché).
  • La página tiene lógica para mirar a la sesión/base de datos/donde sea y vuelve a llenar todos los campos según el último estado de entrada. Si hubiera entradas dinámicas en la página, debería tener suficientes datos para recrearlas.
  • Una vez que el proceso haya finalizado, utilice un patrón POST/Redirect/GET para borrar los datos de la sesión y dificultarle al usuario volver a la página original.

Algunas de las respuestas que he encontrado en internet/stackoverflow:
1. en las conexiones HTTPS, formas están siempre aclaró
2. Al utilizar sitios web dinámicos con sesiones, formas siempre se borran

Creo que el # 1 varía según la configuración/escenario de seguridad/navegador.

La suposición n. ° 2 ciertamente no es cierta en todos los casos (el patrón que acabo de describir aprovecha sesión y formas dinámicas).

+0

Gracias por su respuesta. Por supuesto, tiene toda la razón con su forma de hacerlo. Pero esto es bastante trabajo a veces (especialmente si necesita agregar este comportamiento después). La vida debería ser mucho más fácil si solo el navegador pudiera hacer el trabajo. Aquí es donde mi pregunta está dirigida a. ¿Hay alguna manera de hacer que el navegador haga el trabajo? – Gerwald

2

Es un problema del navegador. Los navegadores se comportan de manera diferente cuando se hace clic en el botón Atrás. Esta pregunta fue hecha antes aquí Losing form data when clicking the back button on browser

+0

bien, cuando se trata de un problema del navegador: ¿qué navegador funciona cómo? p.ej. Safari móvil? Y si es así, ¿cómo hacer que el navegador se comporte como yo quiero? (manteniendo los datos) – Gerwald

0

Me parece gracioso que el enlace que proporcionó fue preguntado antes de este pero que dice que es respondido por este. Oh y no hay respuestas aceptadas tampoco ...

+0

En cuanto a _no aceptó la respuesta_: la respuesta de Tim fue excelente, pero, como también mencionó, es solo una suposición, no una respuesta definitiva. – Gerwald

Cuestiones relacionadas