que protocolo para lineas length headers dummies content cabeceras cabecera http soap

protocolo - ¿Cómo informo de un error a mitad de camino a través de una repsonse http fragmentada sin cerrar la conexión?



protocolo http cabeceras (3)

Tengo un servidor HTTP que devuelve cuerpos grandes en respuesta a solicitudes POST (es un servidor SOAP). Estos cuerpos se "transmiten" a través de fragmentación. Si encuentro un error a mitad de la transmisión de la respuesta, ¿cómo puedo informar ese error al cliente y aún mantener la conexión abierta? La implementación usa una pila patentada HTTP / SOAP, por lo que estoy interesado en las respuestas en el nivel de protocolo HTTP.


También tenga en cuenta que las respuestas fragmentadas pueden contener "pies de página" que son como encabezados HTTP. Después de fallar, puede enviar un pie de página como:

X-RealStatus: 500 Some bad stuff happened

O si tienes éxito:

X-RealStatus: 200 OK


Una vez que el servidor ha enviado la línea de estado (la primera línea de la respuesta) al cliente, ya no puede cambiar el código de estado de la respuesta. Muchos servidores retrasan el envío de la respuesta almacenando el buffer interno hasta que el buffer está lleno. Mientras que el buffer se está llenando, aún puedes cambiar de opinión sobre la respuesta.

Si su cliente tiene acceso a los encabezados de respuesta, puede usar el hecho de que la codificación fragmentada permite que el servidor agregue un avance con encabezados después del cuerpo codificado en fragmentos. Por lo tanto, su servidor, habiendo encontrado el error, puede dejar de enviar correctamente el cuerpo y luego enviar un avance que establece un encabezado con algún valor. Su cliente entonces interpretaría la presencia de este encabezado como una señal de que ocurrió un error.


puede cambiar el código de estado siempre que response.iscommitted () devuelva falso. (Para HttpServletResponse en java, estoy seguro de que existe un equivalente en otros idiomas)