Decodificador de mensagens HTTP

Cole uma requisição ou resposta HTTP/1.1 bruta e leia-a decodificada: a linha de requisição ou de status contra os registros da IANA, cada campo arquivado sob a parte da especificação que o define, a decisão de enquadramento que a RFC 9112 toma para o corpo (qual das oito regras se aplica, Content-Length contra os bytes presentes, Transfer-Encoding sobrepondo-o, os chunks decodificados um a um com os trailers), e as credenciais e cookies que a mensagem carrega, expostos e mascarados. A metade que só decodifica do inspetor de um proxy de interceptação: nunca envia, repete nem altera.

Web e HTTP
Experimente

Uma resposta. Nenhum achado nos pontos que o decodificador verifica.

17 linhas, 3 linhas de campo, fins de linha CRLF, 83 octetos de corpo.

A linha de status

Versão
HTTP/1.1
Código de status
200 2xx sucesso o registro o chama OK (RFC9110)
Frase de razão
OK

Como o corpo é enquadrado (RFC 9112, seção 6.3)

Regra 4: há um campo Transfer-Encoding. Com chunked como codificação final, o corpo termina onde os chunks dizem; numa resposta com outra codificação final, termina quando o servidor fecha; numa requisição, o servidor responde 400.

O corpo termina por
a codificação chunked
Content-Length
ausente
Transfer-Encoding
chunked
Corpo colado
83 octetos (UTF-8)
3 chunks
#linhatamanhoextensõesdados (primeiros 80 caracteres)
164 = 4·Wiki
285 = 5·pedia
310E = 14· in\r\n\r\nchunks.

O último chunk (tamanho 0) está presente. Conteúdo decodificado: 23 octetos. Campos trailer: Expires: Wed, 21 Oct 2015 07:28:00 GMT.

Wikipedia in\r\n\r\nchunks.

3 campos, pelo que servem

Enquadramento (RFC 9112)
  • Transfer-Encoding: chunked linha 3 RFC 9112, Section 6.1: HTTP Semantics
Metadados da mensagem (RFC 9110, seção 6)
  • Trailer: Expires linha 4 RFC 9110, Section 6.6.2: HTTP Semantics
Representação e conteúdo (RFC 9110, seção 8)
  • Content-Type: text/plain linha 2 RFC 9110, Section 8.3: HTTP Semantics

Continue com

A mensagem, com as linhas marcadas

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
Trailer: Expires
 
4
Wiki
5
pedia
E
in
 
chunks.
0
Expires: Wed, 21 Oct 2015 07:28:00 GMT
 

O decodificador lê a mensagem como texto e nunca a envia. As contagens de octetos são contagens UTF-8 do texto colado, então um corpo com conteúdo binário ou outro charset mede diferente no fio. O esquema da URL de uma requisição não está numa mensagem HTTP/1.1 (http é presumido), e se uma resposta responde a um HEAD não se sabe só pela resposta. Os valores dos campos aparecem como escritos; só credenciais e cookies são mascarados. Os fatos vêm da RFC 9112, RFC 9110, RFC 9111, dos registros da IANA, do rfc6265bis-22, da RFC 7617 e da RFC 6648, citados em Fontes.

Endpoint da APIGEThttps://ronutz.com/api/v1/http-message-decoderDocumentado, não servido. Abre a especificação.

Referências