Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 9827|Resposta: 0

Codificação de Transferência do protocolo HTTP (em blocos)

[Copiar link]
Publicado em 24/09/2019 18:07:57 | | | |
1. Contexto:

  • Problemas persistentes de conexão: Para conexões não persistentes, o navegador pode definir os limites da entidade solicitante ou de resposta conforme a conexão está fora do ar ou não; Para conexões contínuas, essa abordagem obviamente não funciona. Às vezes, mesmo tendo enviado todos os dados, o navegador não sabe se haverá novos dados entrando na conexão aberta, então ele apenas espera.
  • Resolver com Comprimento do Conteúdo: Calcule o comprimento da entidade e informe para a outra parte através da cabeça. O navegador pode perceber que a entidade de resposta está acima pela informação de comprimento do Conteúdo
  • Novo problema com o comprimento do conteúdo: Como o campo Comprimento do Conteúdo deve realmente refletir o comprimento da entidade, o comprimento é desconhecido para conteúdo gerado dinamicamente até que o conteúdo seja criado. Neste momento, para obter o comprimento com precisão, você só pode abrir um buffer grande o suficiente e esperar todo o conteúdo ser gerado antes de calcular. No entanto, isso exige mais sobrecarga de memória por um lado, e por outro, fará o cliente esperar mais.
  • Precisamos de um novo mecanismo que não dependa do comprimento do cabeçalho e conheça os limites das entidades - Transfer-Encoding: chunked.

2. Codificação de Transferência (em blocos)

  • Transfer-Encoding é um campo de cabeçalho HTTP (campo de cabeçalho de resposta), que literalmente significa "codificação de transferência". A especificação HTTP mais recente define apenas um tipo de transporte de codificação: em chunks.
  • A codificação de transferência em blocos é um mecanismo de transferência de dados no Protocolo de Transferência de Hipertexto (HTTP) que permite que dados HTTP enviados por um servidor web ao cliente sejam divididos em múltiplas partes. A codificação por transporte de blocos está disponível apenas na versão 1.1 do protocolo HTTP (HTTP/1.1).
  • Os dados são divididos em uma série de blocos e enviados em um ou mais blocos para que o servidor possa enviar dados sem saber o tamanho total do conteúdo enviado antecipadamente.


Métodos específicos

  • Após adicionar o Transfer-Encoding: chunked ao cabeçalho, significa que o pacote é chunked. Nesse caso, as entidades no pacote precisam ser transmitidas em uma série de blocos.
  • Cada bloco contém o valor do comprimento hexadecimal e os dados, e o valor do comprimento é exclusivo de uma linha, e o comprimento não inclui o CRLF no final dela, nem o CRLF no final dos dados fragmentados.
  • O último valor do comprimento do bloco deve ser 0, e os dados correspondentes não têm conteúdo, indicando o fim da entidade.




asp.net Código de teste principal:







Anterior:Comprimento de conteúdo do protocolo Http
Próximo:Três fatores que me fazem desvalorizar o Chrome
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com