Hypertext Transfer Protocol

O Hypertext Transfer Protocol, sigla HTTP (em português Protocolo de Transferência de Hipertexto) é um protocolo de comunicação (na camada de aplicação segundo o Modelo OSI) utilizado para sistemas de informação de hipermídia, distribuídos e colaborativos.[1] Ele é a base para a comunicação de dados da World Wide Web.

Hipertexto é o texto estruturado que utiliza ligações lógicas (hiperlinks) entre nós contendo texto. O HTTP é o protocolo para a troca ou transferência de hipertexto.

Coordenado pela World Wide Web Consortium e a Internet Engineering Task Force, culminou na publicação de uma série de Requests for Comments; mais notavelmente o RFC 2616, de junho de 1999, que definiu o HTTP/1.1. Em Junho de 2014 foram publicados 6 RFC's para maior clareza do protocolo HTTP/1.1.[2] Em Março de 2015, foi divulgado o lançamento do HTTP/2. A atualização deixará o navegador com um tempo de resposta melhor e mais seguro. Ele também melhorará a navegação em smartphones.[3] Os trabalhos no HTTP/3 já começaram e suas versões beta estão em teste por grandes empresas.[4]

Para acedermos a outro documento a partir de uma palavra presente no documento actual podemos utilizar hiperligações (ou âncoras). Estes documentos se encontram no sítio com um endereço de página da Internet – e para acessá-los deve-se digitar o respectivo endereço, denominado URI (Universal Resource Identifier ou Identificador Universal de Recurso), que não deve ser confundido com URL (Universal Resource Locator ou Localizador Universal de Recurso), um tipo de URI que pode ser directamente localizado.

Visão técnica geral

O HTTP funciona como um protocolo de requisição-resposta no modelo computacional cliente-servidor. Um navegador web, por exemplo, pode ser o cliente e uma aplicação em um computador que hospeda um sítio da web pode ser o servidor. O cliente submete uma mensagem de requisição HTTP para o servidor. O servidor, que fornece os recursos, como arquivos HTML e outros conteúdos, ou realiza outras funções de interesse do cliente, retorna uma mensagem resposta para o cliente. A resposta contém informações de estado completas sobre a requisição e pode também conter o conteúdo solicitado no corpo de sua mensagem.

Um navegador web é um exemplo de agente de usuário (AU). Outros tipos de agentes de usuário incluem o software de indexação usado por provedores de consulta (web crawler), navegadores vocais, aplicações móveis e outros software que acessam, consomem ou exibem conteúdo web.

O HTTP é projetado para permitir intermediações de elementos de rede para melhorar ou habilitar comunicações entre clientes e servidores. Sites web de alto tráfego geralmente se beneficiam dos servidores de cache web que entregam conteúdo em nome de servidores de upstream para melhorar o tempo de resposta. Navegadores web armazenam os recursos web acessados anteriormente e reutilizam-nos quando possível para reduzir o tráfego de rede. Servidores proxy HTTP nas fronteiras de redes privadas podem facilitar a comunicação para o cliente sem um endereço globalmente roteável, transmitindo mensagens com servidores externos.

Basicamente, o HTTP define como clientes Web requisitam páginas Web aos servidores e como elas as transferem a clientes. Quando um usuário solicita uma página Web (acessa uma URL), o navegador envia ao servidor mensagens de requisição HTTP para os objetos da página. O servidor, por sua vez, recebe estas requisições e responde com mensagens de resposta HTTP que contém os objetos (...). O protocolo HTTP utiliza por padrão a porta 80 para comunicação (MACEDO et al., 2018).[5]

História

Tim Berners-Lee na Campus Party Brasil em 2009.

O HyperText Transfer Protocol é um protocolo de aplicação responsável pelo tratamento de pedidos e respostas entre cliente e servidor na World Wide Web. Ele surgiu da necessidade de distribuir informações pela Internet e para que essa distribuição fosse possível foi necessário criar uma forma padronizada de comunicação entre os clientes e os servidores da Web e entendida por todos os computadores ligados à Internet. Com isso, o protocolo HTTP passou a ser utilizado para a comunicação entre computadores na Internet e a especificar como seriam realizadas as transações entre clientes e servidores, através do uso de regras básicas.

Este protocolo tem sido usado pela WWW desde 1990. A primeira versão de HTTP, chamada HTTP/0.9, era um protocolo simples para a transferência de dados no formato de texto ASCII pela Internet, através de um único método de requisição, chamado GET. A versão HTTP/1.0 foi desenvolvida entre 1992 e 1996 para suprir a necessidade de transferir não apenas texto. Com essa versão, o protocolo passou a transferir mensagens do tipo MIME44 (Multipurpose Internet Mail Extension) e foram implementados novos métodos de requisição, chamados POST e HEAD.

No HTTP/1.1, versão do protocolo descrito na RFC 2616,[6] foi desenvolvido um conjunto de implementações adicionais ao HTTP/1.0, como por exemplo: o uso de conexões persistentes; o uso de servidores proxy que permitem uma melhor organização da cache; novos métodos de requisições; entre outros. Afirma-se que o HTTP também é usado como um protocolo genérico para comunicação entre os agentes de utilizadores e proxies/gateways com outros protocolos, como o SMTP, NNTP, FTP, Gopher, e WAIS, permitindo o acesso a recursos disponíveis em aplicações diversas.[6]

O HTTP/2 foi publicado como RFC 7540 em maio de 2015.

Ano Versão do HTTP
1991 0.9
1996 1.0
1997 1.1
2015 2.0
2018 3.0

Sessão HTTP

Uma sessão HTTP é uma sequência de transações de rede de requisição-resposta. Um cliente HTTP inicia uma requisição estabelecendo uma conexão Transmission Control Protocol (TCP) para uma porta particular de um servidor (normalmente a porta 80. Veja Lista de portas dos protocolos TCP e UDP). Um servidor HTTP ouvindo naquela porta espera por uma mensagem de requisição de cliente. Recebendo a requisição, o servidor retorna uma linha de estado, como "HTTP/1.1 200 OK", e uma mensagem particular própria. O corpo desta mensagem normalmente é o recurso solicitado, apesar de uma mensagem de erro ou outra informação também poder ser retornada.

Cookies

O termo cookie é derivado do inglês que significa biscoito. Recebeu esse nome de uma antiga gíria usada pelos programadores que consistia em um programa que chamava um procedimento e recebia de volta algo que seria necessário apresentar novamente mais tarde para realizar algum trabalho. Foi criado pela Netscape para solucionar o problema do envio e solicitação de arquivos, que eram esquecidos pelo servidor e que poderiam ser usados por outros computadores com o mesmo IP conforme (TANEMBAUM, 2003), o que causava problemas, pois não se sabia na realidade se era ou não aquele usuário mesmo. Os cookies são arquivos ou strings e não são programas executáveis. Eles são tratados como dados pelo navegador, não existe nenhuma maneira dele ser usado como vírus, apesar de que podem ser explorados bugs no servidor e causar a ativação de um cookie como vírus, por um hacker. Basicamente ele é um grupo de dados trocados entre o servidor de páginas e o navegador colocado em um ficheiro criado no computador do usuário. Serve para manter a persistência das sessões HTTP. Ele funciona da seguinte forma: Um usuário solicita uma página da Web, nisso o servidor pode fornecer informações adicionais acompanhando a página solicitada. Essas informações podem incluir um cookie, um pequeno arquivo ou string (com quatro KB no máximo). Este cookie pode ter até 5 campos (figura abaixo): Domain, Path, Content, Expires, Secure. Domain informa de onde veio o cookie. O navegador confirma que os servidores estão enviando dados fieis a respeito de seu domínio. Cada domínio pode armazenar no máximo 20 cookies por cliente. O campo Path é um caminho na estrutura de diretórios do servidor que identifica as partes da árvore de arquivos do servidor que podem usar o cookie. Frequentemente, ele obtém o símbolo / (barra), que representa a árvore inteira. O campo Content utiliza a forma nome = valor, podendo o servidor definir da maneira que quiser tanto o valor quanto o nome, e é nele que fica armazenado o conteúdo do cookie. Expires é o campo que faz o cookie persistir, nele contém a data e o horário, e se ele estiver ausente o navegador descartara automaticamente após o termino da sessão. O último campo define se ele é seguro ou não.

Domain Path Content Expires Secure
toms-casino.com / CustomerlD=497793521 15 de outubro de 2002

17:00

Yes joes-store.com / Cart=1-00501;1-07031;2-13721 11 de outubro de 2002

14:22

No
aportal.com / Prefs=Stk:SUNW+ORCL;Spt:Jet

s

31 de dezembro de 2010

23:59

No
sneaky.com 31- / UserID=3627239101 12-12

23:59

No

Figura x: Alguns exemplos de cookie.↵Fonte: (TANEMBAUM, 2003).

O cookie é usado para identificar um usuário que configurou uma página web, para que na próxima vez que ele entrar ela esteja configurada do modo em que ele deixou. Pode ser usado também quando se faz a solicitação de armazenamento de senha, na vez posterior em que entrar no site, a sua senha será lembrada. É usado também em sites de compra, como e-commerce, armazenando os produtos que o cliente colocou no carrinho para que no final da compra não necessite fazer todo o processo novamente.

Funcionamento

Um sistema de comunicação em rede possui diversos protocolos que trabalham em conjunto para o fornecimento de serviços. Para que o protocolo HTTP consiga transferir seus dados pela Web, é necessário que os protocolos TCP e IP (Internet Protocol, Protocolo de Internet) tornem possível a conexão entre clientes e servidores através de sockets TCP/IP.

De acordo com Fielding,[7] o HTTP utiliza o modelo cliente-servidor, como a maioria dos protocolos de rede, baseando-se no paradigma de requisição e resposta. Um programa requisitante (cliente) estabelece uma conexão com um outro programa receptor (servidor) e envia-lhe uma requisição, contendo a URI, a versão do protocolo, uma mensagem MIME (padrão utilizado para codificar dados em formato de textos ASCII para serem transmitidos pela Internet) contendo os modificadores da requisição, informações sobre o cliente e, possivelmente, o conteúdo no corpo da mensagem.

O servidor responde com uma linha de status (status line) incluindo sua versão de protocolo e com os códigos de erro informando se a operação foi bem sucedida ou fracasso, seguido pelas informações do servidor, metainformações da entidade e possível conteúdo no corpo da mensagem. Após o envio da resposta pelo servidor, encerra-se a conexão estabelecida.

Mensagem HTTP

O protocolo HTTP faz a comunicação entre o cliente e o servidor por meio de mensagens. O cliente envia uma mensagem de requisição de um recurso e o servidor envia uma mensagem de resposta ao cliente com a solicitação. Segundo Foscarini,[8] os dois tipos de mensagens existentes no protocolo utilizam um formato genérico, definido na RFC 822, para a transferência de entidades.

Uma mensagem, tanto de requisição quanto de resposta, é composta, conforme definido na RFC 2616,[9] por uma linha inicial, nenhuma ou mais linhas de cabeçalhos, uma linha em branco obrigatória finalizando o cabeçalho e por fim o corpo da mensagem, opcional em determinados casos. Nessa sessão serão apresentados os campos que compõem uma mensagem mais detalhadamente; ou seja, o HTTP apresenta o sítio ou local onde está a página da Internet.

Cabeçalho da mensagem

O cabeçalho da mensagem (header) é utilizado para transmitir informações adicionais entre o cliente e o servidor. Ele é especificado imediatamente após a linha inicial da transação (método), tanto para a requisição do cliente quanto para a resposta do servidor, seguido de dois pontos (:) e um valor. Existem quatro tipos de cabeçalhos que poderão ser incluídos na mensagem os quais são: general-header, request-header, response-header e entity-header.[10]

Esses cabeçalhos são utilizados para enviar informações adicionais sobre a mensagem transmitida (general-header), a requisição e os clientes (request-header) que comunicam suas configurações e os formatos de documentos desejados como resposta.[11] Além disso, são utilizados pelo servidor ao retornar o recurso no qual foi requisitado pelo cliente, para transmitir informações que descrevem as configurações do servidor e do recurso identificado pelo URI de requisição, e que não pertence à linha de status (response-header). Na RFC 2616,[12] estão descritos todos os campos que pertencem a esses cabeçalhos.

Alguns tipos MIME[13]
Exemplo Descrição
text/plain Arquivo no formato texto (ASCII)
text/html Arquivo no formato HTML, utilizado
como padrão para documentos Web
Image/gif Imagem com o formato GIF
Image/jpeg Imagem com o formato JPEG
application/zip Arquivo compactado
application/json Arquivo no formato JSON
application/xml (ou text/xml) Arquivo no formato XML

Corpo da mensagem

Uma mensagem HTTP pode conter um corpo de dados que são enviados abaixo das linhas de cabeçalho. Em uma mensagem de resposta, o corpo da mensagem é o recurso que foi requisitado pelo cliente, ou ainda uma mensagem de erro, caso este recurso não seja possível. Já em uma mensagem de requisição, o corpo pode conter dados que serão enviados diretamente pelo usuário ou um arquivo que será enviado para o servidor. Quando uma mensagem HTTP tiver um corpo, poderão ser incluídos cabeçalhos de entidades que descrevem suas características, como por exemplo, o Content-Type que informa o tipo MIME dos dados no corpo da mensagem e o Content-Length que informa a quantidade de bytes que o corpo da mensagem contém. A tabela ao lado apresenta alguns tipos MIME.

Requisição

De acordo com Fielding,[14] uma mensagem de requisição do cliente é composta pelos seguintes campos: uma linha inicial (Request-Line); linhas de cabeçalhos (Request-header); uma linha em branco obrigatória e um corpo de mensagem opcional. A linha inicial de uma requisição é composta por três partes separadas por espaços: o método (Method), a identificação do URI (Request-URI) e a versão do HTTP (HTTP-Version) utilizado.

Segundo Bastos & Ladeira,[15] Request-URI é um identificador uniforme de recurso (Uniform Resource Identifier) que identifica sobre qual recurso será aplicada a requisição. No protocolo HTTP, o tipo de URI utilizado é chamado de URL (Uniform Resource Locator), composto pela identificação do protocolo, pelo endereço do computador servidor e pelo documento requisitado.[16]

Métodos de solicitação

O protocolo HTTP define oito métodos (GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS e CONNECT) que indicam a ação a ser realizada no recurso especificado. Conforme Bastos e Ladeiras,[17] o método determina o que o servidor deve fazer com o URL fornecido no momento da requisição de um recurso. Um servidor HTTP deve implementar ao menos os métodos GET e HEAD. Os métodos GET e POST são os que aparecem mais comumente durante o desenvolvimento web.

Uma solicitação HTTP, ou HTTP Request é uma maneira do navegador mostrar uma página da internet utilizando um dos oito métodos de solicitação do protocolo HTTP.[18]

Além de solicitar um determinado arquivo, envia várias informação para o servidor, sendo elas: o seu IP, a versão do navegador que está usando, que página utilizou para pedir a HTTP Request e a idioma que você usa, entre outros.[18]

GET

O método GET requisita uma representação do recurso especificado. Requisições usando GET devem apenas recuperar dados e não devem ter qualquer outro efeito. (Isto também é verdade para alguns outros métodos HTTP.) O W3C publicou princípios de orientações sobre esta distinção, "O projeto de aplicações web devem ser informados pelos princípios acima, mas também por limitações relevantes."

Abaixo segue um exemplo de uma comunicação entre um cliente e um servidor HTTP. O servidor possui a URL www.exemplo.com, porta 80.

O pedido do cliente (seguido por uma linha em branco, de maneira que o pedido termina com um newline duplo, cada um composto por um carriage return seguido de um Line Feed):

GET /index.html HTTP/1.1
Host: www.exemplo.com

O cabeçalho Host reconhece vários diferentes nomes DNS que tenham o mesmo IP.

A resposta do servidor (seguida por uma linha em branco e o texto da página solicitada):

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8

Variação do GET em que o recurso não é retornado. É usado para obter metainformações por meio do cabeçalho da resposta, sem ter que recuperar todo o conteúdo.

POST

Envia dados para serem processados (por exemplo, dados de um formulário HTML) para o recurso especificado. Os dados são incluídos no corpo do comando. Sua utilização em uma requisição ocorre quando é necessário enviar dados ao servidor para serem processados, geralmente por um programa script identificado no Request-URI. Uma requisição por meio desse método sempre requer que as informações submetidas sejam incluídas no corpo da mensagem e formatadas como uma query string, além de conter cabeçalhos adicionais especificando seu tamanho (Content-Length) e seu formato (Content-Type). Por isso, esse método oferece uma maior segurança em relação aos dados transferidos, ao contrário do método GET que os dados são anexados a URL, ficando visíveis ao usuário.[19] Por exemplo:

 POST /index.html HTTP/1.0
 Accept: text/html
 If-modified-since: Sat, 29 Oct 1999 19:43:31 GMT
 Content-Type: application/x-www-form-urlencoded
 Content-Length: 41
 Nome=NomePessoa&Idade=99&Curso=Computacao

PUT

O método PUT envia os dados de forma semelhante ao POST, através do corpo do HTTP a diferença entre os 2 métodos é semântica. Por exemplo:

Caso você necessite atualizar os dados de um usuário, utilizando o método PUT você pode os atualizar diversas vezes, pois o PUT vai sobrescrever os dados com isso ficará somente com um único registro atualizado.

Se você executasse este mesmo procedimento utilizando o método POST, você criaria diversos registros para cada requisição realizada.

DELETE

Exclui o recurso.

TRACE

Ecoa o pedido, de maneira que o cliente possa saber o que os servidores intermediários estão mudando em seu pedido.

OPTIONS

Recupera os métodos HTTP que o servidor aceita.

CONNECT

Serve para uso com um proxy que possa se tornar um túnel SSL e TLS (um túnel pode ser usado, por exemplo, para criar uma conexão segura).

Códigos de estado

Ver também: Lista de códigos de status HTTP

Do HTTP/1.0 em diante, a primeira linha da resposta HTTP é chamada linha de estado e inclui um código de estado numérico (como "404") e uma frase de razão textual (como "Not Found" - Não Encontrado). A maneira que o agente de usuário manipula a resposta depende primeiramente do código e secundariamente nos cabeçalhos de resposta. Códigos de estado personalizados podem ser usados, uma vez que, se o agente de usuário encontrar um código que ele não reconheça, ele pode usar o primeiro dígito do código para determinar a classe geral da resposta.

Da mesma forma, as frases de razão padrões são apenas recomendações e podem ser substituídas com "equivalentes locais" a critério do desenvolvedor web. Se o código de estado indicou um problema, o agente de usuário pode mostrar a frase de razão para o usuário, para que sejam fornecidas informações adicionais sobre a natureza do problema. O padrão também permite que o agente de usuário tente interpretar a frase de razão, apesar disto poder ser imprudente uma vez que o padrão especifica explicitamente que os códigos de estado são legíveis por máquina e as frases de razão são legíveis por homens.

Conexões persistentes

No HTTP/0.9 e 1.0, a conexão é fechada após um único par de requisição/resposta. No HTTP/1.1 um mecanismo de persistência de vida (keep-alive) foi introduzido, onde uma conexão pode ser reutilizada para mais de uma requisição. Tais conexões persistentes reduzem a latência de requisição perceptível, pois o cliente não precisa renegociar a conexão TCP após a primeira requisição ter sido enviada. Outro efeito colateral positivo é que em geral a conexão se torna mais rápida com o tempo devido ao mecanismo de início-lento do TCP.

A versão 1.1 do protocolo também faz melhoras na otimização de comprimento de banda para o HTTP/1.0. Por exemplo, o HTTP/1.1 introduziu a codificação de transferência em partes para permitir que o conteúdo em conexões persistentes sejam transmitidos em vez de armazenados temporariamente para posterior transmissão. O pipelining HTTP reduz ainda mais o tempo de atraso, permitindo que os clientes enviem várias requisições antes de esperar por cada resposta. Outra melhoria para o protocolo foi o byte serving, onde um servidor transmite apenas a porção de um recurso solicitado explicitamente por um cliente.

Estado de sessão HTTP

O HTTP é um protocolo sem estado. Um protocolo sem estado não exige que o servidor HTTP retenha informações ou estado sobre cada usuário para a duração de várias solicitações. Entretanto, algumas aplicações web implementam estado ou sessões do lado servidor usando um ou mais de um dos métodos a seguir:

Resposta

Para Fielding,[20] uma mensagem de resposta do servidor é composta pelos seguintes campos: uma linha inicial (Status-Line); linhas de cabeçalhos (Responseheader); uma linha em branco obrigatória e um corpo de mensagem opcional. A linha inicial de uma resposta, chamada de linha de status, possui por sua vez três partes separadas por espaços: a versão do protocolo HTTP (HTTP-Version), um código de status (Status-Code) da resposta, que fornece o resultado da requisição, e uma frase de justificativa (Reason-Phrase) que descreve o código do status.

Códigos de retorno

A linha inicial de uma resposta HTTP indica ao cliente se sua requisição foi bem sucedida ou não.[21] Essa situação é fornecida através de um código de retorno (Status-Code) e uma frase explicativa (Reason-Phrase). De acordo com Fielding,[22] o código de status é formado por três dígitos e o primeiro dígito representa a classe que pertence classificada em cinco tipos:

  • 1xx: Informational (Informação) – utilizada para enviar informações para o cliente de que sua requisição foi recebida e está sendo processada;
  • 2xx: Success (Sucesso) – indica que a requisição do cliente foi bem sucedida;
  • 3xx: Redirection (Redirecionamento) – informa a ação adicional que deve ser tomada para completar a requisição;
  • 4xx: Client Error (Erro no cliente) – avisa que o cliente fez uma requisição que não pode ser atendida;
  • 5xx: Server Error (Erro no servidor) – ocorreu um erro no servidor ao cumprir uma requisição válida.

O protocolo HTTP define somente alguns códigos em cada classe descritos na RFC 2616, mas cada servidor pode definir seus próprios códigos.

Conexões

Segundo Hirata,[23] o HTTP/1.0 é um protocolo sem estado. Isto significa que as conexões entre um cliente e um servidor são encerradas após o envio de cada requisição ou resposta. Cada vez que uma conexão é estabelecida ou encerrada, é consumida uma grande quantidade de tempo da CPU, de largura de banda e de memória.

Na maioria das vezes, para se obter o resultado esperado, é necessário realizar mais de uma solicitação de recursos através de várias conexões. Por exemplo, no caso de uma página Web, que consiste de diversos arquivos (.html, .gif, .css, etc.) é preciso que sejam feitas várias requisições para compor a página, uma conexão não-persistente. O ideal seria que apenas uma conexão fosse utilizada para os pedidos e as respostas HTTP, diminuindo, assim, a sobrecarga ocasionada pelas conexões, uma conexão persistente.

A conexão persistente, implementada como conexão padrão no protocolo HTTP/1.1, possibilita que uma conexão seja estabelecida para enviar várias requisições em seqüência sem a necessidade de esperar por cada resposta, no qual serão recebidas na mesma ordem em que as solicitações foram enviadas, um processo chamado de pipelining.[24] Pode também dar-se o caso de ser estabelecida uma conexão sem pipelining, em que o cliente só faz nova requisição quando o servidor lhe envia a resposta, ou seja, o servidor fica inactivo até o objecto (.html, .gif, .css, etc) atingir o seu destino no cliente.

Se uma requisição incluir o cabeçalho Connection: close, a conexão será encerrada após o envio da resposta correspondente. Utiliza-se este cabeçalho quando não há suporte a conexões persistentes, quando for a última requisição a ser enviada nesta conexão, ou ainda, sempre que quiser encerrar a conexão mesmo que nem todas as requisições tenham sido completadas. Além disso, o servidor pode fechar uma conexão se estiver ociosa por um determinado período de tempo.

Outros protocolos

Existem outros tipos de protocolos como o FTP (File Transfer Protocol, ou Protocolo de Transferência de Arquivos), usado para envio de arquivos do computador para um servidor na Web, o SMTP (Simple Mail Transfer Protocol, ou Protocolo de Transferência de Correio Simples), protocolo usado para correio eletrônico, entre outros protocolos.

Esquema de comunicação

Pedido básico de HTTP cliente-servidor:

GET <ficheiro> HTTP/1.1
Host: <ip>
User-Agent: <Agente>
Connection: <tipo>

O agente é quem faz a ligação ao servidor, normalmente um navegador. O tipo indica como o servidor deve proceder com a conexão. É comumente utilizado para requisições persistentes.

Uma requisição completa pode exigir muitas informações. A requisição abaixo - utilizando o método POST - fora retirada do Mozilla Firefox v3.6b5 (pt-BR, para Windows):

POST /diretorio/arquivo.html HTTP/1.1
Host: www.exemplo.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-alive: 115
Cookie: nome=valor; nome2=valor2
Connection: keep-alive
Content-Length: 28
usuario=exemplo&senha=123456

Ver também

Referências

  1. T. Berners-Lee et all, 1996
  2. Mark Nottingham (7 de Junho de 2014). «RFC2016 está morto» (em inglês). Mark Nottingham. Consultado em 13 de junho de 2015 
  3. «HTTP/2: Internet mais rápida» 
  4. «Hypertext Transfer Protocol Version 3 (HTTP/3)» 
  5. Macedo, Ricardo, Tombesi (2018). REDES DE COMPUTADORES. Santa Maria: [s.n.] p. 139 
  6. a b Fielding et al 1999, p. 7
  7. Fielding et al (1999, p. 10)
  8. Foscarini (2001, p. 13)
  9. Fielding et al, 1999, p. 21
  10. cf. Fielding et al, 1999, p. 21
  11. cf. Bastos & Ladeira, 2001
  12. cf. Fielding et al, 1999
  13. Fielding et al, 1999
  14. Fielding (1999, p. 24)
  15. Bastos & Ladeira
  16. cf. Embratel, 2002
  17. Bastos & Ladeiras (2001)
  18. a b «O que é um 'HTTP request'?». www.portais.ws. Consultado em 15 de março de 2011 
  19. Herrmann, 1997
  20. Fielding et al (1999, p. 26)
  21. cf. Herrman, 1997, p. 53
  22. Fielding et al (1999, p. 37)
  23. Hirata, 1999
  24. cf. Fielding et al, 1999, p. 30

Bibliografia

  • T. Berners-Lee, R. Fielding, H. Frystyk (maio de 1996). «Hypertext Transfer Protocol -- HTTP/1.0» (em inglês). Internet Engineering Task Force. Consultado em 21 de junho de 2009. Arquivado do original em 5 de maio de 2005 
  • BASTOS, Leonara de Oliveira; LADEIRA, Adriane Cristina. Protocolo HTTP.
  • cf. 46 HERRMANN, Eric. Aprenda em 1 semana programação CGI em Perl 5. Rio de Janeiro: Campus, 1997
  • MACEDO, R. T. et al. Redes de computadores. 1. ed, 2018, Santa Maria, RS. p. 139.

Ligações externas

Read other articles:

Yogita BihaniBihani in 2019Lahir07 Agustus 1995 (umur 28)New Delhi, IndiaPekerjaanaktrisTahun aktif2018–sekarang Yogita Bihani adalah aktris India yang memulai debut televisinya sebagai Palak Sharma dalam Ekta Kapoor acara romantis Dil Hi Toh Hai pada tahun 2018.[1][2] Kehidupan awal dan latar belakang Yogita lahir pada tanggal 7 Agustus 1995. Ia telah menyelesaikan pendidikan SMA-nya dari Sumermal Jain Public School pada 2012.[3] Dari 2012 hingga 2015, Yo...

 

1947 novella by John Steinbeck The Pearl First edition (US)AuthorJohn SteinbeckIllustratorJosé Clemente OrozcoCover artistRobert HallockCountryUnited States, MexicoLanguageEnglish, Spanish, PortugueseSet inLa Paz, Baja California Sur, 1940sPublisherThe Viking Press (US)William Heinemann (UK) Fondo de Cultura Económica (Mexico and rest of Latin America)Publication date1947Media typePrint (Hardback & Paperback)ISBN0-14-017737-XOCLC27697348 The Pearl is a novella by the Amer...

 

Type of medieval European sword Ulfberht swords +VLFBEHT+ inscription on the blade of a 9th-century sword (Germanisches Nationalmuseum FG 2187) found in 1960 in the Old Rhine close to Friesenheimer Insel, Mannheim[1]TypeSwordProduction historyProduced9th to 11th centuriesSpecificationsMassavg. 1.2 kg (2.7 lb)Lengthavg. 91 cm (36 in)Width5 cm (2 in)Blade typeDouble-edged, straight bladed, slight taperHilt typeOne-handed with pommel, variable guardHead typeAcute distal ta...

Chronologies Réception en l'honneur de la reine Victoria dans le salon de famille du château d'Eu le 3 septembre 1843, Eugène Lami.Données clés 1840 1841 1842  1843  1844 1845 1846Décennies :1810 1820 1830  1840  1850 1860 1870Siècles :XVIIe XVIIIe  XIXe  XXe XXIeMillénaires :-Ier Ier  IIe  IIIe Chronologies géographiques Afrique Afrique du Sud, Algérie, Angola, Bénin, Botswana, Burkina Faso, Burundi, Cameroun, Cap-Vert, Répu...

 

Questa voce o sezione sull'argomento Africa non cita le fonti necessarie o quelle presenti sono insufficienti. Commento: Carenza assoluta, diversi pezzi sono da CN Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Segui i suggerimenti del progetto di riferimento. Costa d'Avorio (dettagli) (dettagli) (FR) Union, Discipline, Travail(IT) Unione, Disciplina, Lavoro Costa d'Avorio - Localizzazione Dati amministrativiNome compl...

 

Sebuah balon menari di Sendai, Jepang Balon menari (tube man, skydancer, air dancer, dan aslinya disebut Tall Boy), adalah sebuah produk periklanan gerak tiup yang memakai sebuah tabung kain panjang (dengan dua saluran keluar atau lebih), yang digerakkan dan ditenagai oleh kipas angin listrik. Saat kipas angin listrik menghembuskan angin melalui tabung kain, ini menyebabkan tabung tersebut bergerak seperti tarian dinamis atau gerakan melambai-lambai. Rancangan balon menari diciptakan oleh Pet...

Pedro Carrasco Nazionalità  Spagna Altezza 175 cm Pugilato Categoria Pesi leggeri e superleggeri Termine carriera 1972 Carriera Incontri disputati Totali 111 Vinti (KO) 106 (66) Persi (KO) 3 (0) Pareggiati 2   Modifica dati su Wikidata · Manuale Pedro Carrasco (Huelva, 11 luglio 1943 – Alosno, 27 gennaio 2001) è stato un pugile e attore spagnolo, Campione europeo dei Pesi leggeri e superleggeri (1967-1971) e Campione del mondo dei leggeri nel 1971. Indice 1 Biografia 1.1 ...

 

Wine making in Macedonia North Macedonia North Macedonia produces wine on some 22,400 hectares (55,000 acres) of vineyards,[1] and the production was 108,100 tonnes in 2008.[2] There are also some additional 30,000 hectares (74,000 acres) of vineyards dedicated to table grapes. Red wine dominates the Macedonian wine production, with around 80 per cent.[citation needed] In contrast, within the European Union, Macedonia is a protected geographical indication (PGI) for wi...

 

Movistar Open 1997 Sport Tennis Data 3 novembre – 9 novembre Edizione 5a Superficie Terra rossa Campioni Singolare Julián Alonso Doppio Hendrik Jan Davids / Andrew Kratzmann 1996 1998 Il Movistar Open 1997 è stato un torneo di tennis giocato sulla terra rossa. È stata la 5ª edizione del Movistar Open, che fa parte della categoria World Series nell'ambito dell'ATP Tour 1997. Si è giocato a Santiago in Cile, dal 3 al 9 novembre 1997. Indice 1 Campioni 1.1 Singolare 1.2 Doppio 2 Collegam...

Covert global surveillance collection system and database Part of a series onGlobal surveillance Disclosures Origins Pre-2013 2013–present Reactions Systems XKeyscore PRISM ECHELON Sentient Carnivore Dishfire Stone Ghost Tempora Frenchelon Fairview MYSTIC DCSN Boundless Informant Bullrun Pinwale Stingray SORM RAMPART-A Mastering the Internet Jindalee Operational Radar Network Agencies NSA R&AW CSE BND CNI ASIO DGSE Five Eyes FSB MSS GCHQ Places The Doughnut Fort Meade Menwith Hill Pine ...

 

Montalto Di Castro AirfieldPart of Twelfth Air ForceCoordinates42°22′27.58″N 011°36′05.07″E / 42.3743278°N 11.6014083°E / 42.3743278; 11.6014083TypeMilitary airfieldSite informationControlled byUnited States Army Air ForcesSite historyBuilt1944In use1944 Montalto Di Castro Airfieldclass=notpageimage| Location of Montalto Di Castro Airfield, Italy Montalto Di Castro Airfield is an abandoned World War II military airfield in Italy, located approxima...

 

艾哈迈德·塞古·杜尔总统杜尔、代表几内亚共和国在美国马里兰访问华盛顿特区期间抵达安德鲁斯空军基地。 (1982年6月) 第一任几内亚总统任期1958年10月2日—1984年3月26日前任无,职务设立继任路易斯·兰萨纳·贝阿沃吉 个人资料出生(1922-01-09)1922年1月9日 法兰西第三共和国法属西非法拉纳逝世1984年3月26日(1984歲—03—26)(62歲) 美國克利夫兰, 俄亥俄州墓地科奈克里大清�...

Canadian ice hockey coach and executive Not to be confused with Tom Rennie. Ice hockey player Tom Renney Renney in 2011Born (1955-03-01) March 1, 1955 (age 69)Cranbrook, British Columbia, CanadaCoached for Vancouver CanucksNew York RangersEdmonton OilersDetroit Red WingsCoaching career 1996–2014 Thomas Renney (born March 1, 1955) is a Canadian former ice hockey coach and executive. He served as the chief executive officer of Hockey Canada from 2014 to 2022, and was previously an as...

 

Hina Sugita oleh Jamie Smed, 2019Informasi pribadiNama lengkap Hina SugitaTanggal lahir 31 Januari 1997 (umur 27)Tempat lahir Prefektur Fukuoka, JepangTinggi 1,61 m (5 ft 3+1⁄2 in)Posisi bermain GelandangKarier senior*Tahun Tim Tampil (Gol)2015– INAC Kobe Leonessa 39 (5)Tim nasional2018– Jepang 1 (0) * Penampilan dan gol di klub senior hanya dihitung dari liga domestik Hina Sugita (杉田 妃和, lahir 31 Januari 1997) adalah seorang pemain sepak bola Jepang. St...

 

この項目では、かつて埼玉県北埼玉郡にあった町について説明しています。群馬県前橋市の地名については「大利根町 (前橋市)」をご覧ください。 おおとねまち大利根町 道の駅童謡のふる里おおとね横のホテイアオイ 大利根町旗 大利根町章 廃止日 2010年3月23日廃止理由 新設合併旧・加須市、北埼玉郡騎西町、北埼玉郡北川辺町、大利根町→加須市現在の自治体 加須�...

كارتالي    علم شعار الإحداثيات 53°03′N 60°39′E / 53.05°N 60.65°E / 53.05; 60.65   تاريخ التأسيس 1810  تقسيم إداري  البلد روسيا[1]  خصائص جغرافية  المساحة 86.13 كيلومتر مربع  ارتفاع 300 متر  عدد السكان  عدد السكان 13700 (1939)[2]33917 (1959)[3]40000 (1967)[2]42801 ...

 

Nathan NgoyNazionalità Belgio Altezza183 cm Peso74 kg Calcio RuoloDifensore Squadra Standard Liegi CarrieraGiovanili -2019 Anderlecht2019-2020 Standard Liegi Squadre di club1 2020- Standard Liegi28 (1) Nazionale 2018 Belgio U-152 (4)2018-2019 Belgio U-164 (4)2019-2020 Belgio U-173 (4) 1 I due numeri indicano le presenze e le reti segnate, per le sole partite di campionato.Il simbolo → indica un trasferimento in prestito. Statistiche aggiornate al 26 ottobre 202...

 

Type of exercise equipment For the album by Josh Turner, see Punching Bag (album). A mixed martial arts fighter working his hands on a heavy bag A punching bag (or British English punchbag) is a sturdy bag designed to be repeatedly punched. A punching bag is usually cylindrical and filled with various materials of suitable hardness. History An 1892 advertisement for The Lively Sparring Bag[1] Punching bags have been used in martial arts and swordplay for the entire written history of ...

Ne doit pas être confondu avec Khemis Miliana. Miliana Le centre ville; l'horloge et le musée Noms Nom arabe algérien مليانة Administration Pays Algérie Région Titteri Wilaya Aïn Defla Daïra Miliana Code ONS 44002 Démographie Gentilé Milianais Population 44 201 hab. (2008[1]) Densité 804 hab./km2 Géographie Coordonnées 36° 17′ nord, 2° 13′ est Altitude Min. 400 mMax. 1 500 m Superficie 55 km2 Divers Saint patron S...

 

Theatrical genre Bertolt Brecht in 1954 Epic theatre (‹See Tfd›German: episches Theater) is a theatrical movement that arose in the early to mid-20th century from the theories and practice of a number of theatre practitioners who responded to the political climate of the time through the creation of new political dramas. Epic theatre is not meant to refer to the scale or the scope of the work, but rather to the form that it takes.[1] Epic theatre emphasizes the audience's perspect...