2011-10-28 7 views
13

Risolto: incollare i byte qui mi ha fatto capire che mi mancava righe vuote tra pezzi ...è una richiesta HTTP/1.1 implicitamente keep-alive per impostazione predefinita?


Fa un HTTP/1.1 richiesta è necessario specificare un'intestazione Connection: keep-alive, o è sempre keep-alive di default?

This guide mi ha fatto pensare che sarebbe; che, quando il mio server http riceve una richiesta 1.1, è keep-alive se non riceve esplicitamente un'intestazione Connection: close.

chiedo da quando il mio il diverso comportamento del client di ab e httperf mi sta facendo impazzire abbastanza a chiedermi la mia sanità mentale su questo ...


Ecco cosa httperf --hog --port 42042 --print-reply body invia:

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

Ed ecco la risposta del mio server:

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

12 
Hello World  1 
0 

httpref stampa la risposta, ma poi resta seduto, nessuno dei due lati chiude la connessione e httpref non sta uscendo.

Dov'è il mio errore?

+0

Sì, keep-alive è l'impostazione predefinita HTTP/1.1. La lunghezza del contenuto di – Benjie

+1

nella codifica Chunked non ha molto senso – nurettin

risposta

19

Da RFC 2616, section 8.1.2:

Una differenza significativa tra HTTP/1.1 e versioni precedenti di HTTP è che le connessioni persistenti sono il comportamento di default di qualsiasi connessione HTTP. Cioè, se non diversamente indicato, il client DOVREBBE assumere che il server manterrà una connessione persistente, anche dopo le risposte di errore dal server.

Problemi correlati