O HTTP é um protocolo de comunicação, ou seja, uma convenção de regras e padrões que controla e possibilita uma conexão e troca de dados entre dois sistemas computacionais.
É baseado no modelo de cliente servidor, ou seja, de um lado, um navegador requisita um determinado dado, e do outro, um computador (ou servidor) retorna a informação desejada (ou não, caso ela não seja encontrada, ocorra um erro ou não exista).
Criada na década de 1990, o HTTP surgiu da necessidade de se padronizar a troca de informações pela internet, de uma maneira que fosse leve, rápida e compreendida por todos os computadores conectados à rede.
Como funciona?
Clientes e servidores se comunicam pela interne trocando mensagens individuais. As mensagens enviadas pelo cliente, geralmente navegadores web, são chamadas de requisições (requests). As réplicas dos servidores são chamadas de respostas (responses), podendo conter algum conteúdo (como arquivos HTML) além de informações sobre o status da requisição.
Usuários comuns não lidam diretamente com essas mensagens. Elas são executadas e tratadas por navegadores, programas ou servidores proxy e web. Estes servers proveem mensagens HTTP por meio de arquivos de configuração (no caso de servidores), APIs (para navegadores) e outras interfaces.
Requisições e respostas HTTP são estruturadas da seguinte forma;
- Uma linha única inicial (start-line) que descreve as requisições a serem implementadas ou seu status de sucesso (ou falha);
- Um conjunto opcional de cabeçalhos HTTP especificando a requisição ou descrevendo o conteúdo da mensagem;
- Uma linha em branco apenas para indicar que toda a metainformação da requisição já foi enviada.
- O conteúdo da mensagem, chamada de corpo (body), conforme solicitado pela requisição. A presença ou não do corpo e seu tamanho são especificados pelo cabeçalhos HTTP (head).
A versão atual do protocolo HTTP é chamada de HTTP/2, divulgada em 2014 e tendo sido sua primeira revisão desde o protocolo HTTP/1.1, padronizado em 1997. Essa versão trouxe várias melhorias de segurança e desempenho, visando também a crescente utilização de smartphones na navegação pela internet.
URL
Para acessar recursos através do HTTP, usamos a URL, que pode oferecer diversas maneiras de especificar o site que queremos visitar, a estrutura de uma URL pode se dar por:
http://admin:password@site.com:80/dashboard.php?login=true#stats
Componente | Exemplo | Descrição |
---|---|---|
Protocolo | http:// https:// | É usado para identificar o protocolo que vai ser acessado pelo cliente, termina obrigatoriamente com :// |
Informações do usuário | admin:password@ | É um campo opcional e contém as credenciais separadas por dois pontos : , usado para autenticar no host. |
Host | site.com | Significa a localização do recurso. Pode ser um hostname ou um IP |
Porta | :80 | A porta é separada da host por dois pontos : . Se não for especificada, os protocolos http e https vão especificar as portas 80 e 443 , respectivamente |
Caminho | /dashboard.php | Esse ponto do recurso que vai ser acessado, pode ser um arquivo ou um navegador. Se não existir nenhum caminho especificado, o server retornará o caminho padrão index.html |
Query | ?login=true | A query começa sempre com um ? , e consiste de um parâmetro login e um valor true , separados por & |
Fragmentos | #stats | Fragmentos são |
Métodos
Existem 9 métodos diferentes no HTTP padrão (apenar de existirem extensões que permitem que esse número seja maior, como o WebDAV por exemplo). Além dos métodos mais comuns GET
e POST
, os outros mais usados são:
Método | Descrição |
---|---|
HEAD | É identico a requisição GET , mas a resposta apenas contém os headers, e não o corpo |
PUT | Escreve o corpo da requisição em uma localização específica |
DELETE | Remove algum recurso de alguma localização específica |
OPTIONS | Mostra diferentes métodos aceitos pelo servidor web |
PATCH | Aplica uma modificação parcial em um recurso em determinada localização |