2013-02-05 18 views

risposta

5

Sì, può restituire 204. Oppure 400. O 400. Non esiste alcuna restrizione generale su quali codici di stato un metodo possa restituire.

Si noti inoltre che è ora di smettere di guardare RFC 2616. Vedere http://trac.tools.ietf.org/wg/httpbis/trac/wiki.

+1

Presumibilmente il secondo, "O 400", dovrebbe essere "O 404" (o qualcos'altro non 400). – 76484

+0

Cosa ne pensi dell'altra risposta qui?Anche se in pratica sembra che i browser siano "OK" con 204 FWIW ... di fatto standard, per la vittoria! :) – rogerdpack

7

RFC 2616 dice:

Una risposta 200 DEVONO ...

...

Se nessun corpo di risposta è inclusa, la risposta deve includere un campo Content-Length con un valore di campo di "0".

che in effetti non chiarisce se il 200 si applica a tutto il paragrafo o solo alla prima frase. Se volessi giocare sul sicuro, lasceresti che il MUST avesse la precedenza (e non ti costerebbe molto).

RFC 7231, che obsoletes RFC 2616, ha cambiato la formulazione di

Un server che genera una risposta positiva alle opzioni dovrebbero ...

...

un server deve generare un Campo Lunghezza contenuto con un valore "0" se nessun corpo del payload deve essere inviato nella risposta.

che rende applicabile l'ultima frase in senso generale agli stati 2xx e il MUST prevale.

Pertanto, DEVE essere inviata la lunghezza del contenuto. Ma un Content-Length non può essere inviato con un 204:

RFC 2616 dice che in questo modo:

La presenza di un corpo del messaggio in una richiesta viene segnalata con l'inclusione di un Content-Length o Campo di intestazione codifica trasferimento ...

... Tutte le risposte 1xx (informazioni), 204 (senza contenuto) e 304 (non modificate) NON DEVONO includere un messaggio-corpo.

E RFC 7230 chiarisce anche questo:

Un server non deve inviare un campo di intestazione Content-Length in una risposta con un codice di stato di 1xx (Informativo) o 204 (No Content).

Ecco come lo capisco, comunque.

Problemi correlati