Menu
Coddy logo textTech

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.1

Trê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.

challenge icon

Desafio

Difícil

Ignore o curl completamente e fale HTTP por conta própria.

  1. Crie index.html contendo raw
  2. Sirva a pasta na porta 9110
  3. Envie uma solicitação GET /index.html HTTP/1.0 bruta por meio de nc e 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 OK

Lembre-se da linha em branco: printf 'GET /index.html HTTP/1.0\r\n\r\n'.

Experimente você mesmo

Terminal
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Playground de Terminal