In base a http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.2 l'unica risposta mai menzionata riguardo una richiesta HTTP OPTIONS è una 200. Tuttavia, sembra che ci siano casi come quando la lunghezza del contenuto è 0 che 204 sia più appropriato. È appropriato che una richiesta HTTP OPTIONS restituisca un 204?Una richiesta HTTP OPTIONS può restituire un 204 o dovrebbe sempre restituire 200?
risposta
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.
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.
- 1. Python: perché isinstance può restituire False, quando dovrebbe restituire True?
- 2. La risposta "NoContent" di Jersey restituisce 200 anziché 204
- 3. Come configurare Apache per restituire un codice 204?
- 4. Una classe può restituire un oggetto stesso
- 5. Una richiesta GET di Jersey può restituire un'entità polimorfica?
- 6. Restituire http 500 con framework Slim
- 7. Una funzione VBScript può restituire un dizionario?
- 8. Non dovrebbe treeMap.entrySet() restituire un SortedSet?
- 9. interrompere l'elaborazione richiesta in CherryPy e restituire 200 risposta da uno strumento
- 10. ASP.NET Web API restituisce 200 OK quando deve restituire 404
- 11. Una procedura SQL può restituire una tabella?
- 12. Ogni richiesta HTTP riuscita restituisce sempre il codice di stato 200?
- 13. Quale codice Http devo restituire per "Cosa non trovata"?
- 14. Sotto Linux, può recv restituire sempre 0 su UDP?
- 15. PHP: un metodo può restituire un puntatore?
- 16. javax.persistence.Query.getResultList() può restituire null?
- 17. Come faccio a rendere la pagina php restituire un errore 503 (o qualsiasi cosa non-200)
- 18. Una funzione PHP può restituire molti vars?
- 19. Devo restituire un array o una collezione da una funzione?
- 20. Un Runnable può restituire un valore?
- 21. divisione MATLAB ... dovrebbe 29/128 restituire 0?
- 22. Quando ManualResetEvent.Set() può restituire false?
- 23. Perché dovrebbe restituire NaN in MATLAB
- 24. Stub una richiesta http per restituire una HTTPartyResponse con una Net :: HTTPResponse
- 25. Perché utilizzare ASP.NET OutputCache continua a restituire un 200 OK, non un 304 non modificato?
- 26. HTTP 200 o 404 per la lista vuota?
- 27. Invio di una richiesta HTTP che indica al server di restituire solo intestazioni e nessun corpo?
- 28. È accettabile restituire unmodifiableList o dovrei restituire l'array?
- 29. java: restituire una raccolta
- 30. Può Object.GetType() restituire mai null?
Presumibilmente il secondo, "O 400", dovrebbe essere "O 404" (o qualcos'altro non 400). – 76484
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