Se una risposta a una richiesta GET non ha la codifica Content-Length o Transfer: chunked, cosa succede? Come fa il cliente a sapere quando finisce il messaggio?Cosa succede nella risposta HTTP a una richiesta GET senza Content-Length o Transfer-encoding?
risposta
RFC 7230 section 3.3.3 contiene una lista di controllo delle condizioni per trovare la dimensione del corpo del messaggio. In sostanza dice che la risposta dipende da quale sia il codice di stato. Le condizioni pertinenti sono # 1 e # 7.
"1. Qualsiasi risposta ... con un 1xx (Informativo), 204 (No Content), o 304 (Not Modified) Stato codice è sempre termina con la prima riga vuota dopo i campi di intestazione , indipendentemente dai campi di intestazione presenti nel messaggio , e quindi non può contenere un corpo del messaggio. "
"7. In caso contrario, questo è un messaggio di risposta senza dichiarata messaggio lunghezza del corpo, quindi la lunghezza del corpo del messaggio è determinata dal numero di ottetti ricevuti prima server chiudendo la collegamento".
Vale anche la pena sapere che il messaggio può continuare dopo la fine della parte del corpo. RFC 7230 section 4.4 definisce una funzione Trailer in cui il payload può essere seguito da una seconda serie di intestazioni di mime. Se esistono, il messaggio finisce dove lo fanno.
Secondo la specification
La lunghezza di un corpo del messaggio è determinato da uno dei seguenti (in ordine di precedenza):
- [...]
- Altrimenti , questo è un messaggio di risposta senza lunghezza del corpo del messaggio dichiarata, quindi la lunghezza del corpo del messaggio è determinata dal numero di ottetti ricevuti prima che il server chiuda la connessione.
Il client deve rilevare che la connessione è chiusa.
- 1. Richiesta GET HTTP e risposta XML
- 2. Risposta a una richiesta POST HTTP idempotente
- 3. Comprimi HTTP Risposta GET
- 4. Ottenere risposta della richiesta http senza lunghezza del contenuto?
- 5. Risposta null dalla richiesta HTTP HTTP
- 6. HttpURLConnection Richiesta GET con http-header "Accetta"
- 7. Come posso effettuare una richiesta http senza recuperare una risposta http in Python?
- 8. Richiesta POST HTTP vuota o richiesta GET per generare un valore casuale tramite un'API HTTP
- 9. HTTP get Richiesta utilizzando C WITHOUT libCurl
- 10. Python-Scapy o simili - Come posso creare una richiesta HTTP GET a livello di pacchetto
- 11. Ambito in TypeScript/angularJS Richiesta HTTP GET
- 12. Come impedire a Android di restituire una risposta nella cache alla mia richiesta HTTP?
- 13. Come posso eseguire una richiesta GET senza scaricare il contenuto?
- 14. Invia richiesta HTTP e ricevi risposta HTTP utilizzando javascript
- 15. Registro richiesta e risposta http jax-ws
- 16. Annulla una richiesta HTTP GET dall'estensione di Firefox
- 17. d3 js - caricamento json senza http get
- 18. cosa succede quando uso multi ob_start() senza ob_end_clean() o ob_end_flush()?
- 19. funziona come richiesta e risposta http python
- 20. Imposta UserAgent nella richiesta http
- 21. richiesta http a webhdfs, ma risposta vuota dal server
- 22. Come rendere HTTP GET richiesta in Android
- 23. HTTP: la richiesta POST riceve un 302, se la richiesta di reindirizzamento è una GET?
- 24. window.location() è uguale a una richiesta GET?
- 25. node.js: Richiesta e risposta http Mock
- 26. richiesta Node.js HTTP non restituendo piena risposta
- 27. Risposta HTTP/1.1 a più range
- 28. Cosa succede a Monitor.Enter senza un Monitor.Exit corrispondente?
- 29. Symfony2: invia una richiesta HTTP
- 30. Cosa succede in BeginProcessRequest()?
Specifiche errate; è stato obsoleto da RFC 7230, ma per il resto è corretto. –
@JulianReschke Grazie, aggiornato. –