2009-05-26 6 views
7

Non è possibile stabilire da RFC 2616 se un client HTTP deve accettare una risposta senza risposta 204 che include Content-Length: 0 o Transfer-Encoding: intestazioni Chunked. Queste intestazioni sembrano rompere alcune client HTTP e proxy, che a quanto pare tenta di leggere il corpo risposta vuota, ma the spec reads:È un'applicazione HTTP che invia una Content-Length o Transfer-Encoding con una risposta 204 No Content interrotta?

  1. Qualsiasi messaggio di risposta che "NON DEVE" includere un messaggio-corpo (come il Le risposte 1xx, 204 e 304 e qualsiasi risposta a una richiesta HEAD) è terminata sempre dalla prima riga vuota dopo i campi dell'intestazione, indipendentemente dai campi dell'intestazione dell'entità presenti nel messaggio.

a me "a prescindere dai campi di entità-header" implica che i clienti dovrebbero tollerare questo stato di cose. Il Erlang HTTP library ha scelto questa interpretazione. Tuttavia, lighthttpd e IBM hanno scelto l'interpretazione opposta - che il server non dovrebbe includere queste intestazioni per le risposte a cui è vietato avere corpi.

Quindi l'applicazione Web dovrebbe rimuovere tali intestazioni dalla risposta oppure l'infrastruttura di rete ei client devono tollerare quelle intestazioni su 204 Nessun contenuto, 304 Non modificato, ecc.?

risposta

6

Secondo il RFC7230 (vedi http://tools.ietf.org/html/rfc7230#section-3.3.1) alla fine della pagina 29 si legge:

Un server non deve inviare un campo di intestazione Transfer-Encoding in qualsiasi di risposta con un codice di stato di 1xx (Informativo) o 204 (n. Cont. ).

Pertanto l'applicazione Web non deve inviare quelle intestazioni con la risposta.

+0

Nice - sei anni dopo, hai la risposta corretta! –

2

Non posso dirvi cosa è corretto, in quanto non conosco il protocollo HTTP in quel dettaglio.

Tuttavia, devi chiederti:

  1. Posso cambiare la mia applicazione per rimuovere quelle intestazioni?
  2. oppure posso modificare gli utenti della mia applicazione per ignorare quelle intestazioni?

A mio parere, l'applicazione non deve inviare quelle intestazioni in quel caso.

Problemi correlati