Anatomia de uma Requisição
Lição 20 de 47 do curso Redes com o Terminal da Coddy.
Por baixo do curl, uma solicitação HTTP é texto simples enviado por um socket. Ela começa com uma linha indicando o que você quer:
GET /index.html HTTP/1.1Três partes: o método (que tipo de operação), o caminho (qual recurso) e a versão. Depois vêm os cabeçalhos, um por linha, então uma linha em branco e, opcionalmente, um corpo.
A linha em branco não é decoração. É assim que o servidor sabe que os cabeçalhos terminaram e que o corpo, se houver, começa. Uma solicitação sem ela fica travada, porque o servidor ainda está esperando receber o restante.
Você pode enviar uma manualmente. nc abre uma conexão bruta, e tudo o que você fornecer será enviado diretamente pela conexão:
printf 'GET / HTTP/1.0\r\n\r\n' | nc 127.0.0.1 9110\r\n é o terminador de linha exigido pelo HTTP, e a sequência duplicada representa essa linha em branco.
Desafio
DifícilIgnore o curl completamente e fale HTTP por conta própria.
- Crie
index.htmlcontendoraw - Sirva a pasta na porta 9110
- Envie uma solicitação
GET /index.html HTTP/1.0bruta por meio dence imprima apenas a primeira linha do que for retornado
Essa primeira linha é a linha de status do servidor. Saída esperada:
HTTP/1.0 200 OKLembre-se da linha em branco:
printf 'GET /index.html HTTP/1.0\r\n\r\n'.
Experimente você mesmo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Redes com o Terminal
2Nomes e DNS
Por que os nomes existemO arquivo hostsConsultando um nomeTipos de registrosRecapitulação: nomes5HTTP na Prática
Anatomia de uma RequisiçãoMétodos de RequisiçãoCódigos de StatusCabeçalhos de RespostaEscrevendo uma RespostaRecapitulação: Fundamentos de HTTP3Portas e Sockets
O que é uma portaPortas conhecidasLocalhostEscutando vs. conectandoRecapitulação: portas6curl em Detalhes
Visualizando os CabeçalhosSalvando RespostasCabeçalhos PersonalizadosStatus e TempoCódigos de Saída do curlRecapitulação: Opções do curl9Autenticação e Depuração
Chaves de API e BearerO User AgentTimeouts e Novas TentativasLendo uma FalhaRevisão: DepuraçãoPratique por conta própria: Playground de Terminal