Qual é o campo “Content-Length” no header HTTP?

O que isso significa?

  1. Contagem de bytes da cadeia de conteúdo codificada com codificação especificada no header.
  2. Contagem de caracteres da sequência de conteúdo.

Especialmente no caso de “Content-Type: application / x-www-form-urlencoded”.

rfc2616

The Content-Length entity-header field indicates the size of the entity-body, in decimal number of OCTETs, sent to the recipient or, in the case of the HEAD method, the size of the entity-body that would have been sent had the request been a GET. 

Não importa qual seja o tipo de conteúdo.

Extensão no post abaixo .

É o número de bytes de dados no corpo da solicitação ou resposta. O corpo é a parte que vem depois da linha em branco abaixo dos headers.

O header Content-Length é um número que indica o comprimento exato de bytes do corpo HTTP. O corpo HTTP é iniciado imediatamente após a primeira linha vazia encontrada após a linha de início e os headers.

Geralmente, o header Content-Length é usado para o HTTP 1.1, de modo que a parte receptora saiba quando a resposta atual * terminou, para que a conexão possa ser reutilizada para outra solicitação .

* … ou pedido, no caso de methods de solicitação que tenham um corpo, como POST, PUT ou PATCH

Como alternativa, o header Content-Length pode ser omitido e um header Chunk Transfer-Encoding pode ser usado.

Se os headers Content-Length e Transfer-Encoding estiverem ausentes, no final da resposta, a conexão deverá ser fechada.

Um octeto é 8 bits. O comprimento do conteúdo é o número de octetos que o corpo da mensagem representa.

A partir daqui :

O campo de header de entidade Content-Length indica o tamanho do corpo da entidade, em número decimal de OCTETs, enviado para o destinatário ou, no caso do método HEAD, o tamanho do corpo da entidade que teria sido enviado o pedido foi um GET.

  Content-Length = "Content-Length" ":" 1*DIGIT 

Um exemplo é

  Content-Length: 3495 

Aplicativos devem usar este campo para indicar o comprimento de transferência do corpo da mensagem, a menos que isso seja proibido pelas regras da seção 4.4 .

Qualquer conteúdo de comprimento maior ou igual a zero é um valor válido. A Seção 4.4 descreve como determinar o comprimento de um corpo da mensagem, se um Comprimento do Conteúdo não for fornecido.

Observe que o significado deste campo é significativamente diferente da definição correspondente em MIME, onde é um campo opcional usado dentro do tipo de conteúdo “message / external-body”. Em HTTP, ele deve ser enviado sempre que o tamanho da mensagem puder ser determinado antes de ser transferido, a menos que isso seja proibido pelas regras da seção 4.4.

Minha interpretação é que isso significa o comprimento “no fio”, ou seja, o comprimento do conteúdo “codificado”

Desta página

O uso mais comum do POST, de longe, é enviar dados de formulários HTML para scripts CGI. Nesse caso, o header Content-Type: geralmente é application / x-www-form-urlencoded e o header Content-Length: fornece o tamanho dos dados do formulário codificados por URL (aqui está uma nota sobre codificação de URL). O script CGI recebe o corpo da mensagem por meio de STDIN e o decodifica. Aqui está um envio de formulário típico, usando o POST:

 POST /path/script.cgi HTTP/1.0 From: frog@jmarshall.com User-Agent: HTTPTool/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 32 

De acordo com a especificação :

O campo de header de entidade Content-Length indica o tamanho do corpo da entidade, em número decimal de OCTETs, enviado para o destinatário ou, no caso do método HEAD, o tamanho do corpo da entidade que teria sido enviado o pedido foi um GET.

 Content-Length = "Content-Length" ":" 1*DIGIT 

Um exemplo é

 Content-Length: 3495 

Aplicativos devem usar este campo para indicar o comprimento de transferência do corpo da mensagem, a menos que isso seja proibido pelas regras da seção 4.4.

Qualquer conteúdo de comprimento maior ou igual a zero é um valor válido. A Seção 4.4 descreve como determinar o comprimento de um corpo da mensagem, se um Comprimento do Conteúdo não for fornecido.

Observe que o significado deste campo é significativamente diferente da definição correspondente em MIME, onde é um campo opcional usado dentro do tipo de conteúdo “message / external-body”. Em HTTP, ele deve ser enviado sempre que o tamanho da mensagem puder ser determinado antes de ser transferido, a menos que isso seja proibido pelas regras da seção 4.4.

O campo de header de entidade Content-Length indica o tamanho do corpo da entidade, em número decimal de OCTETs, enviado para o destinatário ou, no caso do método HEAD, o tamanho do corpo da entidade que teria sido enviado o pedido foi um GET.

Content-Length = “Content-Length” “:” 1 * DIGIT

Um exemplo é

Content-Length: 1024

Aplicativos devem usar este campo para indicar o comprimento de transferência do corpo da mensagem.

No PHP você usaria algo assim.

 header("Content-Length: ".filesize($filename)); 

No caso de “Content-Type: application / x-www-form-urlencoded”, os dados codificados são enviados para o agente de processamento designado, para que você possa definir o tamanho ou o tamanho dos dados que serão enviados.