Hypertext Transfer Protocol (HTTP) é um protocolo de rede, da camada de aplicação do modelo OSI, que é utilizado para a transferência de conteúdo na World Wide Web.
HTTP utiliza um modelo client-request/server-response. HTTP é um protocolo sem estado, o que significa que ele não exige que o servidor retenha informações de estado sobre cada usuário para a duração de várias solicitações.
O pedido é enviado com um método de HTTP:
- GET - usado para recuperar dados , o corpo da solicitação deve ser ignorado.
- POST - usado para enviar dados para o servidor, o corpo deve manter os dados
Estes são todos os métodos suportados por navegadores mais antigos, mas a especificação HTTP 1.1(en) inclui um pouco mais: HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT e PATCH.
A resposta é retornada com um código de status(en):
- 1xx são informativas
- 2xx indica sucesso, a maioria das páginas terá um status 200
- 3xx são usados para redirecionamentos
- Códigos 4xx são usados para erros com o pedido, o mais comum sendo 404 para uma página não encontrada
- 5xx são usados para erros de servidor
Tanto o pedido e resposta são constituídos por um cabeçalho e um corpo opcional.
O cabeçalho contém uma lista de pares de chave-valores, separadas usando novas linhas e dois pontos, por exemplo, um pedido pode ter cabeçalhos assim:
Proxy- Connection: keep-alive
Referer: url
User-Agent: nome do navegador ou aplicativo cliente
Accept-Encoding: gzip, deflate
Accept-Language: pt-BR
Note que, no exemplo, o pedido é dito ao servidor que a resposta pode ser enviada com o corpo comprimido com gzip ou esvaziar codificação.
A solicitação precisa de um corpo se ele está enviando dados adicionais ao servidor, por exemplo, se o envio de informação entrou para um formulário.
Os cabeçalhos de resposta incluirão informações informando o cliente como lidar com os dados de resposta, por exemplo, se eles podem armazenar em cache os dados (e por quanto tempo).
O corpo da resposta terá os dados solicitados, como o HTML de uma página web ou dados de imagem.
HTTP é usado pelos navegadores para recuperar o conteúdo da web, mas também pode ser usado para APIs de dados. Por exemplo, como o SOAP ou serviço REST.