Pregunta

¿Es posible hacer una respuesta HTTP tal que el navegador la ignore y siga mostrando la página mostrada anteriormente?

Me refiero al siguiente escenario:

a) el usuario hace clic en algo

b) algo de POST va al servidor (o GET, pero sigamos con POST como más interesante)

c) el servidor decide que por algún motivo no desea enviar la respuesta en este momento

d) el servidor envía una respuesta específicamente diseñada

e) el navegador no muestra la página de error, no muestra la página vacía, no redirige a ningún lado, no vuelve a cargar, simplemente sigue mostrando lo que estaba mostrando como si el usuario nunca hubiera enviado el formulario

PD Por supuesto, se puede envolver con AJAX, pero pregunto si es posible una solución básica que no sea JavaScript

¿Fue útil?

Solución

Intente devolver HTTP 204 Sin contenido. Consulte la descripción de este código de respuesta en RFC 2616 (Protocolo de transferencia de hipertexto - - HTTP / 1.1) donde dice:

  

Si el cliente es un agente de usuario, NO DEBE cambiar su vista de documento   lo que provocó el envío de la solicitud. Esta respuesta está destinada principalmente a permitir   entrada para que las acciones se realicen sin causar un cambio en el activo del agente de usuario   vista de documento, aunque cualquier metainformación nueva o actualizada DEBE aplicarse a la   documento actualmente en la vista activa del agente de usuario.

Otros consejos

Este es un método generalmente llamado AJAX . Requiere Javascript , y el función XMLHttpRequest .

Editar: Noté su 'PS' en la parte inferior. La 204 respuesta sugerida en otra respuesta parece que podría ser válida solución no Javascript.

Supongamos que haces eso.

¿Qué hace el usuario? Envíe el formulario nuevamente, por supuesto.

Varias veces.

Luego deciden que su sitio está roto y se van.

Creo que necesita Javascript para hacer eso, puede enviar la solicitud y, dependiendo de la respuesta del servidor, el Javascript puede hacer una devolución falsa, evitando la actualización / recarga de la página real.

No sé acerca de la respuesta 204, pero tal vez de esa manera puedas hacerlo desde el lado del servidor.

Otra forma de hacerlo (también Javascript) es hacer una devolución falsa, justo después de enviar la solicitud, y dependiendo de la respuesta del servidor (con ajax) puede modificar la página real o enviar al usuario a otra página.

No. El protocolo HTTP consiste en un ciclo de solicitud-respuesta. El servidor no puede decidir NO responder (puede, pero está rompiendo el protocolo y cometiendo un error).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top