postado em 25 de mai. de 2011 12:51 por Usuário desconhecido
por Filipe Abelha
No post anterior começamos a falar sobre o protocolo Http. Continuando no assunto, hoje falaremos sobre as estruturas específicas das mensagens que compõem o protocolo.
Cabeçalho O cabeçalho é composto por um conjunto de campos que podem ser gerais a todas as mensagens (general), de request, de response e de entidade. A seguir serão enumerados os campos de cabeçalho serparados por suas categorias:
Podem ser utilizado pelas mensagens de request e de response.
- Cache-Control - especifica diretivas que devem ser seguidos pelos mecanismos de cache por toda a transação de request/response;
- Connection - permite ao emissor da mensagem especificar opções que são desejadas especificamente para a conexão atual e que não podem ser comunicadas por proxies através de outras conexões;
- Date - data e hora da mensagem;
- Pragma - permite ao emissor da mensagem especificar diretivas específicas da implementação que podem ser aplicadas a qualquer destinatário ao longo do da cadeia de request/response;
- Trailer - indica que o conjunto de campos do cabeçalho se encontram no trailer da mensagem;
- Transfer-Encoding - encoding utilizado no corpo da entidade;
- Upgrade - permite que o emissor especifique os protocolos de comunicação adicionais suportados e que o servidor poderia utilizar caso "ache" apropriado alterar o protocolo;
- Via - é utilizado por gateways e proxies para indicar protocolos intermediários;
- Warning - apresenta informações adicionais sobre o estado ou transformação da mensagem que não pode ser refletida na mensagem.
Exclusivos das mensagens de requests.
- Accept - especifica certos tipos de mídia que são aceitos como resposta;
- Accept-Charset - especifica qual conjunto de caracteres é aceito como resposta;
- Accept-Encoding - especifica o encoding do conteúdo que é aceito como resposta;
- Accept-Language - especifica a linguagem natural preferencial da resposta;
- Authorization - contém as informações de autenticação do cliente;
- Expect - indica quais comportamentos especiais do servidor são esperados pelo cliente;
- From - contém o e-mail do usuário humano que controla o client;
- Host - especifica o host de internet e o número da porta do recurso requerido;
- If-Match - é utilizado como verificação por um método da mensagem;
- If-Modified-Since - é utilizado como verificação por um método da mensagem;
- If-None-Match - é utilizado como verificação por um método da mensagem;
- If-Range - é utilizado como verificação por um método da mensagem;
- If-Unmodified-Since - é utilizado como verificação por um método da mensagem;
- Max-Forwards - é utilizado pelos métodos TRACE e OPTIONS para limitar o número de gateways e de proxies que podem re-encaminhar o request;
- Proxy-Authorization - contém informações de autenticação para proxies;
- Range - indica o intervalo de bytes do corpo da entidade;
- Referer - contém o endereço dos recursos;
- TE - indica qual extensão de código de transferência é aceito no response;
- User-Agent - contém as informações do usuário agente que iniciou o request.
Exclusivos das mensagens de response. - Accept-Ranges - permite ao servidor indicar o intervalo de requests aceitos para um recurso;
- Age - contém a estimativa do originador da mensagem do tempo desde a resposta gerada no servidor de origem;
- ETag - contém o valor atual da tag da entidade;
- Location - é usado para redirecionar o destinatário para uma URL diferente informada no request, para completar o request ou para identificar um novo recurso;
- Proxy-Authenticate - contém o esquema e os parâmetros de autenticação para o proxy para este endereço;
- Retry-After - indica o quanto é esperado que o serviço fique indisponível para o cliente;
- Server - contém informações sobre o software utilizado pelo servidor de origem para processar o request;
- Vary - indica o conjunto de campos de cabeçalho do request que podem ser utilizados em cache na resposta que podem ser utilizados nos requests subsequentes sem revalidações;
- WWW-Authenticate - contém o esquema e os parâmetros de autenticação aplicáveis à URL indicada pelo request.
Podem ser utilizados pelas mensagens de request e de response. Contém informações sobre o corpo da entidade ou, caso este não exista, sobre os recursos indicados pelo request. É composto pelos campos:
- Allow - identifica o conjunto de métodos suportados pelo recurso identificado pelo request;
- Content-Encoding - especifica o encoding do corpo da entidade;
- Content-Language - especifica a linguagem natural aplicados no corpo da entidade
- Content-Length - indica o tamanho do corpo da entidade;
- Content-Location - contém informações sobre o local da entidade quando ela é acessível de um local diferente do indicado pelo request;
- Content-MD5 - contém o MD5 do corpo da mensagem;
- Content-Range - é utilizado para indicar a posição do pedaço de um corpo da entidade na entidade inteira a ser inserido;
- Content-Type - indica qual o tipo de mídia de um corpo de entidade;
- Expires - indica a data e a hora de expiração do response;
- Last-Modified - indica a data e a hora que o servidor de origem acredita que foi realizada a última modificação;
- extension-header - é composto por campos que não fazem parte do protocolo, mas que podem (ou não) ser compreendidos pelo requisitante.
Corpo da mensagem
Pode conter o corpo da entidade associada ao request ou ao response. O corpo da mensagem se diferencia do corpo da entidade apenas quando um encoding é aplicado à entidade.
As regras para uma mensagem conter um corpo são diferentes para o request e o response. Em um request, a inclusão de um corpo necessita da inclusão dos campos de cabeçalho Content-Length e Transfer-Encoding, caso contrário o servidor até atenderá a requisição, mas ignorará o corpo. Em um response, a presença do corpo vai depender do método do request e do código de estado da resposta (202 - Accepted, 302 - Found, 404 - Not Found, 502 - Bad Gateway): request com o método HEAD obtém respostas sem o corpo, assim como todos com estados 1** (informacional), 204 (sem conteúdo) e 304 (não modificado). Todas as outras combinações de métodos de request e estado da resposta possuem um corpo, mesmo de tamanho zero.
Entidade
As mensagens de request e response podem conter uma entidade, de acordo com as regras de existência do corpo da mensagem mencionadas acima. Uma entidade é composta pelo cabeçalho específico (já descrito) e pelo corpo da entidade (em algumas situações só será trafegado o cabeçalho da entidade).
A entidade se encontra no corpo da mensagem e está em um formato e encoding determinado pelos campos relativos de seu cabeçalho.
Na próxima semana falaremos sobre a formação das mensagens de request e de response, o que nos dará base para falarmos sobre uma das formas de integração com a
plataforma iVarejo: a integração via Http Post utilizando o Form (veja o nosso tutorial).
tags: #http, #protocolo, #request, #response, #introducaoFontes:http://www.ietf.org/http://tools.ietf.org/html/rfc2616 |
|