Cómo enviar el navegador a una página de error si parte de la respuesta ha sido enviada (fragmentada)

Este es un escenario típico: se evalúa una página y hay un búfer: una vez que el búfer está lleno, la parte de la página que se evalúa se envía al navegador. Esto utiliza la encoding fragmentada HTTP 1.1.

Sin embargo, se puede producir un error en uno de los fragmentos (después de que el primero ya se haya enviado). En ese caso:

  • no se puede redireccionar (enviar un encabezado de Location ) porque los encabezados y el estado de respuesta ya se enviaron
  • no se puede hacer una redirección del lado del servidor (reenviar), porque la nueva página tendrá que procesarse después de la parte que ya se envió, se verá fea por cierto.

Entonces, ¿qué debes hacer en este caso? Le pregunté si puede enviar un encabezado de ubicación en el tráiler fragmentado, pero esto es http de bajo nivel y es posible que la abstracción de idiomas no lo permita, incluso si es posible (y es probable que no sea compatible en todos los navegadores)

Otra opción es enviar un window.href.location="errorPage" y, por lo tanto, forzar al cliente a redireccionar, pero eso es feo. Además, debe poner para cerrar cualquier posible etiqueta no cerrada en la página parcial.

(Estoy etiquetando los principales lenguajes web / marcos, porque este es un problema universal)

No puede redireccionar desde el servidor en una encoding fragmentada porque los encabezados ya se han enviado. La única forma de realizar una redirección es enviar una etiqueta desde el servidor y realizar una redirección del lado del cliente. Por curiosidad, ¿estás intentando implementar un servidor COMET? Si este es el caso, HTML5 WebSockets parece mejor (si los navegadores a los que te diriges los admite, por supuesto) en comparación con la técnica del iframe oculto .

    Intereting Posts