Pular para o conteúdo
Todos os conceitos

HTTP: pedido e resposta

Como o navegador conversa com um site, em pedidos e respostas de texto.

A web funciona em HTTP, uma conversa de texto entre o navegador (cliente) e o servidor. O cliente manda um pedido e o servidor devolve uma resposta.

Navegador Servidor 1 · pedido GET /sobre?lang=pt HTTP/1.1 Host: estancia.example User-Agent: Navegador/1.0 método e caminho cabeçalhos 2 · resposta HTTP/1.1 200 OK Content-Type: text/html <html>…</html> código de status corpo: a página tudo texto, que você pode ler e mudar
O navegador manda um pedido em texto e o servidor devolve uma resposta, também em texto: dá para ler e mudar cada linha.

Um pedido tem um método (GET para buscar, POST para enviar dados), um caminho (/sobre, /entrar) e cabeçalhos (linhas de nome: valor com informações extras). Pode levar também parâmetros na URL, depois de um ?: em /busca?termo=erva, o parâmetro termo vale erva.

A resposta começa com um código de status: 200 deu certo, 301/302 é um redirecionamento, 401/403 é acesso negado, 404 não existe, 500 é erro no servidor. Depois vêm os cabeçalhos e o corpo (em geral o HTML da página).

GET /sobre?lang=pt HTTP/1.1
Host: estancia.example
User-Agent: Navegador/1.0

HTTP/1.1 200 OK
Content-Type: text/html

Em Python, requests.get("http://estancia.example/sobre", params={"lang": "pt"}) monta esse mesmo pedido, e resposta.status_code traz o número. No terminal, curl -i URL mostra a resposta inteira, cabeçalhos e corpo.

Aparece nestes desafios