A linguagem da Web: requisição, resposta e a evolução até o HTTP/3 — RFC 9110
O HyperText Transfer Protocol é o protocolo de aplicação que sustenta a World Wide Web, no modelo requisição-resposta.
Cada recurso tem um endereço — a URL (https://host/caminho?query). O HTTP define como pedir e transferir esses recursos entre cliente e servidor.
Toda interação na Web é um par requisição/resposta — possivelmente atravessando caches e proxies.
| Método | Uso | Seguro? | Idempotente? |
|---|---|---|---|
| GET | Recupera um recurso. | Sim | Sim |
| HEAD | Como GET, mas só os cabeçalhos. | Sim | Sim |
| POST | Cria/submete dados (processa no servidor). | Não | Não |
| PUT | Cria/substitui um recurso por completo. | Não | Sim |
| PATCH | Atualiza parcialmente um recurso. | Não | Não |
| DELETE | Remove um recurso. | Não | Sim |
| OPTIONS | Descobre capacidades/CORS. | Sim | Sim |
| Classe | Significado | Exemplos |
|---|---|---|
| 1xx | Informativo | 100 Continue · 101 Switching Protocols |
| 2xx | Sucesso | 200 OK · 201 Created · 204 No Content |
| 3xx | Redirecionamento | 301 Moved Permanently · 302 Found · 304 Not Modified |
| 4xx | Erro do cliente | 400 Bad Request · 401 Unauthorized · 403 Forbidden · 404 Not Found · 429 Too Many Requests |
| 5xx | Erro do servidor | 500 Internal Server Error · 502 Bad Gateway · 503 Service Unavailable |
O HTTP é stateless: o servidor não "lembra" da requisição anterior. Mas a Web precisa de sessões (login, carrinho…).
O cookie costuma guardar um identificador de sessão (estado no servidor) ou um token assinado (ex.: JWT), que carrega a identidade do usuário de forma verificável.
Cache-Control define por quanto tempo um recurso é válido. Com ETag + If-None-Match, o cliente pergunta "mudou?"; se não, o servidor responde 304 Not Modified — sem reenviar o corpo.
O cliente declara preferências (Accept, Accept-Language, Accept-Encoding) e o servidor escolhe a melhor representação (formato, idioma, compressão gzip/br).
| Versão | Ano | Novidade principal |
|---|---|---|
| HTTP/0.9 | 1991 | Só GET, uma linha, sem cabeçalhos. |
| HTTP/1.0 | 1996 | Cabeçalhos, status, tipos de conteúdo. |
| HTTP/1.1 | 1997 | Conexões persistentes, Host obrigatório, chunked, cache. |
| HTTP/2 | 2015 | Binário, multiplexação, compressão de cabeçalhos (HPACK). |
| HTTP/3 | 2022 | Sobre QUIC/UDP: sem head-of-line blocking do TCP, TLS 1.3 integrado. |
A multiplexação acaba com a fila do HTTP/1.1, em que uma resposta lenta atrasava todas as outras.
O HTTP é o protocolo cliente-servidor e stateless da Web: cada interação é uma requisição (método + URL + cabeçalhos) e uma resposta (status + cabeçalhos + corpo). Cookies recriam sessões; cache e negociação otimizam. Evoluiu do texto simples (1.1) para o binário multiplexado (HTTP/2) e o transporte sobre QUIC (HTTP/3), sempre protegido pelo HTTPS/TLS.
Voltar aos Tópicos