2011-10-28 18 views
13

Resuelto: pegar los bytes aquí me hizo dar cuenta de que me estaba perdiendo líneas vacías entre trozos ...es una solicitud HTTP/1.1 implícitamente keep-alive por defecto?


Hace un HTTP/1.1 petición tiene que especificar un encabezado Connection: keep-alive, o es siempre keep-alive por defecto?

This guide me hizo pensar que lo haría; que, cuando mi servidor http obtiene una solicitud 1.1, es keep-alive a menos que reciba explícitamente un encabezado Connection: close.

te pido desde mi el diferente comportamiento del cliente de ab y httperf me está volviendo tan loco como para preguntarse por mi salud mental en éste ...


Esto es lo envía httperf --hog --port 42042 --print-reply body:

GET/HTTP/1.1 
User-Agent: httperf/0.9.0 
Host: localhost 

Y aquí está la respuesta de mi servidor:

HTTP/1.1 200 OK 
Connection: keep-alive 
Transfer-Encoding: chunked 
Content-Length: 18 

12 
Hello World  1 
0 

httpref imprime rápidamente la respuesta, pero luego se queda allí, ninguno de los lados cierra la conexión y httpref no sale.

¿Dónde está mi error?

+0

Sí, keep-alive es el HTTP/1.1 predeterminado. – Benjie

+1

longitud del contenido en codificación fragmentada no tiene mucho sentido – nurettin

Respuesta

19

De RFC 2616, section 8.1.2:

Una diferencia significativa entre HTTP/1.1 y versiones anteriores de HTTP es que las conexiones persistentes son el comportamiento por defecto de cualquier conexión HTTP. Es decir, a menos que se indique lo contrario, el cliente DEBE asumir que el servidor mantendrá una conexión persistente, incluso después de las respuestas de error del servidor.