Fundamentos do HTTP e HTTPS
O HTTP (Hypertext Transfer Protocol) é o protocool fundamental da Web, desenvolvido originalmente para facilitar a comunicação entre navegadores e servidores. Ele define as regras de como mensagens são formatadas e transmitidas, permitindo a transferência de recursos como documentos HTML, imagens e vídeos.
O HTTPS (Hypertext Transfer Protocol Secure) é a extensão segura do protocolo. Ele utiliza criptografia via TLS (Transport Layer Security) para proteger a integridade e a privacidade dos dados em trânsito. Isso impede que terceiros interceptem informações confidenciais e garante que o cliente esteja se comunicando com o servidor autêntico por meio de certificados digitais.
Anatomia de uma URL
A URL (Uniform Resource Locator) funciona como o endereço de um recurso na rede. Ela é composta por diversos elementos que indicam ao navegador como e onde encontrar a informação:
- Esquema (Scheme): Define o protocolo de comunicação (ex: http, https, ftp).
- Host: O domínio ou endereço IP do servidor de destino.
- Porta: O canal de comunicação. Por padrão, HTTP usa a porta 80 e HTTPS a 443.
- Caminho (Path): A locailzação específica do recurso dentro do servidor.
- Query String: Parâmetros adicionais enviados após o caminho (ex:
?id=42&filtro=novo). - Fragmento: Uma referência a uma seção interna da página, geralmente precedida por
#.
O Ciclo de Requisição e Resposta
A comunicação web baseia-se em um modelo de cliente-servidor. O navegador envia uma requisição e o servidor devolve uma resposta correspondente.
Exemplo de Requisição HTTP
POST /api/v2/login HTTP/1.1
Host: servicos.exemplo.com.br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/118.0.0.0
Content-Type: application/json
Content-Length: 45
{"usuario": "admin", "token": "abc123xyz"}
Neste exemplo, a primeira linha indica o método (POST), o recurso acessado e a versão do protocolo. Os cabeçalhos seguintes informam o destino, o tipo de navegador e o formato do dado enviado no corpo da mensagem.
Exemplo de Resposta HTTP
HTTP/1.1 200 OK
Server: Apache/2.4.52 (Ubuntu)
Date: Wed, 25 Oct 2023 10:00:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 154
<html>
<body>
<h1>Autenticação Concluída</h1>
<p>Bem-vindo ao painel de controle.</p>
</body>
</html>
A resposta começa com o status do processamento (200 OK), seguida por metadados do servidor e, por fim, o conteúdo solicitado pelo cliente.
Métodos HTTP Comuns
Os métodos indicam a intenção da operação que o cliente deseja realizar no servidor:
- GET: Solicita a representação de um recurso (apenas leitura).
- POST: Envia dados para serem processados, frequentemente resultando na criação de um novo recurso.
- PUT: Substitui todas as representações atuais do recurso de destino pelos dados da requisição.
- DELETE: Remove o recurso especificado.
- PATCH: Aplica modificações parciais a um recurso.
Categorias de Códigos de Status
Os códigos de status são divididos em classes que facilitam a depuração e o entendimento do resultado da operação:
- 100-199 (Informativos): Indica que a requisição foi recebida e o processo continua.
- 200-299 (Sucesso): A ação foi recebida, compreendida e aceita com êxito.
- 300-399 (Redirecionamento): Indica que o cliente precisa realizar ações adicionais para completar a requisição.
- 400-499 (Erro do Cliente): A requisição contém sintaxe incorreta ou não pode ser processada pelo servidor. Ex:
404 Not Found. - 500-599 (Erro do Servidor): O servidor falhou ao tentar processar uma requisição válida. Ex:
503 Service Unavailable.
Cabeçalhos (Headers) e Cookies
Os cabeçalhos permitem que o cliente e o servidor passem informações adicionais. Cabeçalhos de requisição como Accept-Language informam as preferências do usuário, enquanto cabeçalhos de resposta como Set-Cookie instruem o navegador a armazenar dados.
Como o HTTP é um protocolo stateless (sem estado), ele não retém informações de requisições anteriores de forma nativa. Os Cookies resolvem esse problema ao armazenar pequenos fragmentos de dados no navegador, permitindo a manutenção de sessões de login, carrinhos de compras e preferências de personalização.