È un'applicazione HTTP che invia un Content-Length o Transfer-Encoding con 204 No response contenuti rotto?

StackOverflow https://stackoverflow.com/questions/912863

  •  06-09-2019
  •  | 
  •  

Domanda

Non riesco a dire da RFC 2616 se un client HTTP dovrebbe accettare un 204 No response contenuti che include Content-Length: 0 o Transfer-Encoding: chunked intestazioni. Queste intestazioni sembrano rompere alcune client HTTP e proxy, che a quanto pare tentano di leggere il corpo risposta vuota, ma la specifica legge :

  
      
  1. Ogni messaggio di risposta che "NON DEVE" includere un messaggio-corpo (come   il 1xx, 204, e 304 risposte e   qualsiasi risposta ad una richiesta HEAD) è   sempre terminata dal primo vuoto   riga dopo i campi di intestazione,   indipendentemente campi entità-intestazione   presente nel messaggio.
  2.   

Per me "a prescindere dai campi di entità-header" implica che i clienti dovrebbero tollerare questo stato di cose. Il Erlang HTTP biblioteca scelto questa interpretazione. Tuttavia, LightHTTPD e IBM ha scelto l'interpretazione opposta -. che il server non dovrebbe includere queste intestazioni per le risposte che sono vietate dal dover corpi

Quindi, se l'applicazione web rimuovere quelle intestazioni dalla risposta, o dovrebbe l'infrastruttura di rete e client tollerare queste intestazioni su 204 No Content, 304 Not Modified, ecc?

È stato utile?

Soluzione

Secondo la RFC7230 (consulta 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 (No      Content).

Pertanto l'applicazione web non deve inviare tali intestazioni con la risposta.

Altri suggerimenti

Non posso dirvi ciò che è corretto, nel senso che io non conosco il protocollo HTTP in quel dettaglio.

Tuttavia, è arrivata a chiedere a te stesso:

  1. Posso cambiare la mia applicazione per rimuovere quelle intestazioni?
  2. o posso cambiare i consumatori della mia applicazione di ignorare queste intestazioni?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top