¿Cómo evitar que Chrome actualice la página al ver la fuente?

20

Al ver la fuente de la página en Google Chrome, el navegador abre una nueva pestaña y básicamente pega la URL con el view-source:prefijo. Esto no es deseable.

Como desarrollador, puedo incluir algunos resultados de diagnóstico que solo son visibles en la fuente después de enviar un formulario. Cuando Chrome actualiza la página para ver la fuente, hace que esta información desaparezca.

¿Hay alguna forma de prevenir este comportamiento?

Nota: Estoy familiarizado con la opción "Inspeccionar elemento". Esto no es un sustituto adecuado para ver la fuente de la página sin procesar de la página exacta que está viendo.


Un guión de prueba rápida

<pre>
  <?= print_r($_POST, true) ?>
</pre>
<form action="" method="post">
  <input id="foo" name="foo" value="bar" />
  <input type="submit" />
</form>

Después de hacer clic en el botón Enviar, la página muestra

Array
(
    [foo] => bar
)

Si ve la fuente de la página, verá una salida vacía $_POST

<pre>
Array
(
)
</pre>
<form action="" method="post"> 
  <input id="foo" name="foo" value="bar" /> 
  <input type="submit" /> 
</form> 

Actualizar

Al parecer, este error ya se ha enviado. Suspiro...

Si alguien sabe de un buen trabajo, lo agradecería mucho.

macek
fuente
La gente de allí no comprende que la fuente no se guarda en la memoria (debido al minimalismo) sino que se manipula. Debería ver el comentario code.google.com/p/chromium/issues/detail?id=523#c47 ya que también parece una buena idea ...
Tamara Wijsman

Respuestas:

12

Desde la página de informe de errores, la solución mencionada en el comentario 12 funciona: en las Herramientas para desarrolladores, habilite el Seguimiento de recursos. (Si estaba desactivado, habilitarlo volverá a enviar la solicitud que generó la página actualmente visible, ya sea POST o GET). En la lista de Recursos, puede hacer clic en la página principal para ver el código fuente tal como fue devuelto por el servidor. tanto para solicitudes POST como GET.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Más información

Ejecuté algunas pruebas usando un archivo php simple que mostraba el método de solicitud utilizado y un valor POSTed, un registro del servidor proxy para ver qué solicitudes estaba haciendo Chrome y el chrome://net-internals/view-cache/prefijo para ver qué Chrome estaba almacenando en caché.

Cuando utiliza el comando Ver código fuente, Chrome muestra el código fuente de su versión en caché de la página y solo almacena en caché las páginas solicitadas mediante el método GET.

Si está mirando una página que solicitó anteriormente con GET y POST, solo se almacena en caché la versión GET. El uso del comando Ver código fuente no volverá a solicitar la página, pero mostrará la versión GET en caché, no la versión POST actualmente visible, si la hay.

Si está mirando una página que solo ha solicitado utilizando el método POST, el uso del comando Ver código fuente hará que Chrome busque en su caché, no encuentre nada, solicite la página usando GET, almacénelo en caché y muestre el origen de eso.

Bavi_H
fuente
Buen descubrimiento!
Tamara Wijsman
1
Chrome ha cambiado mucho desde esta respuesta, pero es básicamente lo mismo: abra las herramientas de desarrollo, asegúrese de que se registre el tráfico de red y encuentre la solicitud que se registró en la pestaña Red. En el caso de las solicitudes redirigidas, puede marcar "Conservar registro" o "registro inverso al navegar" para no borrar el registro con cada nueva solicitud de sincronización.
Jon z
1
@Jonz después de darme cuenta de esta locura, ya no me gusta Google Chrome. Por ejemplo, necesitaba verificar la fuente de la página de la página de agradecimiento del sitio web de comercio electrónico (página cargada después de que el usuario realizó un pago exitoso, para verificar la activación del código GTM). Ahora, al cargar la página, simplemente desarmo la sesión necesaria y nuevamente al recargar si no se encuentra la sesión, redirijo al usuario a la página de inicio. Entonces, si trato de usar el truco de Google Chrome, nunca podré ver la fuente de la página, porque solo puede reenviar la solicitud GET y POST, pero no puede restablecer la sesión. Por lo tanto, sugeriríause "Inspect Element"
Abhishek Madhani
1
@AbhishekMadhani No estoy seguro de que quisieras responderme, pero repetiré lo que escribí en un comentario a continuación: parece que, a partir de Chrome Canary 37, no se envía una nueva solicitud de red cuando ves la fuente .
Jon z
2

Buena pregunta, y algo decepcionante para leer todos los comentarios de "esto está mal" o "esto no funcionará". Este comportamiento hace que la función "Ver fuente de página" sea inútil para el desarrollo en muchos casos.

Hay una extensión llamada " Visor de fuente rápida ", que parece mostrar realmente la fuente de la página cargada actualmente (aunque no la he probado con solicitudes POST).

básico6
fuente
0

Lamento decírtelo, pero esto va en contra de la naturaleza actual de la exploración y depuración en un navegador ...

La fuente original no se guarda en la memoria, sino que se analiza y transforma en un árbol de análisis lo más rápido posible, esto para evitar el uso de memoria inútil. Por lo tanto, cualquier información de depuración que oculte en la fuente se pierde y debe solicitarse explícitamente. En los llamados sitios Web 2.0, los elementos también cambian y esa es la razón por la cual la inspección es así ...

Solución 1: Fiddler Web Debugger le permite inspeccionar el tráfico HTTP,
esto le permite ver la información de depuración de su última solicitud.

Solución 2: incruste su información de depuración o añádala al final,
o tal vez muéstrela como una ventana emergente o de otra manera increíble que no perturbe su diseño.

Tamara Wijsman
fuente
13
TomWij, "esto va en contra de la naturaleza actual de navegar y depurar en un navegador ..." esto es simplemente inexacto. Las versiones actuales de Firefox y Safari se comportan como "esperado". De hecho, debido a que he usado estas funciones en otros navegadores, he llegado a esperarlas en Chrome. Mantener un par de KB de texto plano para la fuente original en la memoria no debería ser una dificultad.
macek
Google Chrome es conocido por su minimalismo. ;-)
Tamara Wijsman
3
Esto es demostrablemente falso. En Chrome, puede guardar la fuente original de la página (Guardar página como) sin hacer una segunda solicitud. Esto es lo que se debe mostrar cuando "Ver código fuente". La implementación actual es altamente indeseable. Por ejemplo, al ver el resultado de una POST. Ver fuente actualmente hace un OBTENER a la misma ubicación, mostrando una página completamente diferente. Ver fuente siempre debe mostrar el estado de la página en la solicitud actual , NO una solicitud futura.
Chris
66
Sin duda, y ahí es donde View Source debería leer también. Una nueva solicitud es simplemente engañosa e incorrecta.
Chris
2
@Jonz ¿Está discutiendo eliminar la función Ver código fuente por completo? Apoyaría esto si la única alternativa es la implementación rota actual. ¿Pero por qué no podemos tener ambos? Hacer clic a través de los registros de red en la barra de herramientas de desarrollo es una excelente opción cuando se necesita ese nivel de información, pero si solo desea ver la fuente de la página actual, parece excesivo.
Chris