2011-12-25 14 views
8

Stavo iniziando a piacere HTTP, fino a quando ho scoperto che alcuni codici di stato like 304, non contengono alcun corpo del messaggio e sono terminati da CRLF.Elenco completo dei codici di stato HTTP CHE NON INCLUDONO UN ORGANISMO DI RISPOSTA

Dov'è un elenco completo? Finora ho ricevuto: 100-199, 204 e 304. Ce ne sono altri?

MODIFICA: No, non secondo lo standard. Grazie per la risposta.

Sono interessato alla delimitazione del messaggio con connessioni persistenti. vale a dire dove si ferma un messaggio HTTP e il prossimo inizio.

+0

questo è un elenco di codici di stato HTTP (http://en.wikipedia.org/wiki/List_of_HTTP_status_codes) ... ATTENZIONE che anche i codici che restituiscono un corpo di risposta potrebbero in alcune situazioni comportarsi in modo diverso e tornare senza risposta body (bug del server, network porblem, qualunque cosa) ... Consiglio vivamente di non fare affidamento sullo standard puro BUT per gestire qualsiasi cosa tu riceva di conseguenza e con garbo - almeno in modo che il tuo codice non muoia o produca risultati non corretti ... – Yahia

+0

@Yahia ciò di cui sono preoccupato è SOLO la delimitazione dei messaggi HTTP. cioè dove finisce un messaggio e inizia il prossimo? – unixman83

+0

hai letto il mio commento completo? – Yahia

risposta

14

Un corpo è opzionale per tutti i codici di 4xx errore:

Tranne quando si risponde ad una richiesta HEAD, il server DEVONO includere un'entità che contiene una spiegazione della situazione di errore, e se si tratta di un condizione temporanea o permanente.

Stesso discorso per il 5xx:

Tranne quando si risponde a una richiesta HEAD, il server DEVONO includere un'entità che contiene una spiegazione della situazione di errore ...

(DOVREBBE dire che davvero, dovrebbero, ma non è un MUST.)

I messaggi 1xx non contenere un corpo per quanto posso dire. 201 (oltre a 204 e 205) non deve avere un corpo. I 3xx sono una borsa mista, ma un corpo è facoltativo per molti di loro.

Fonte: HTTP/1.1: Status Code definitions.

Le regole per le informazioni sulla lunghezza del messaggio sono descritte in HTTP Message - 4.4 Message Length. Non è esattamente banale.

+0

se non includono alcun corpo, includono un'intestazione 'Content-Length: 0'? Come li delimino con connessioni persistenti? – unixman83

+0

@ unixman83: modificato con un collegamento alle regole di lunghezza dei messaggi. – Mat

Problemi correlati