Python - cabeçalhos HTTP
O pedido e a resposta entre o cliente e o servidor envolvem o cabeçalho e o corpo da mensagem. Os cabeçalhos contêm informações específicas do protocolo que aparecem no início da mensagem bruta enviada pela conexão TCP. O corpo da mensagem é separado dos cabeçalhos por uma linha em branco.
Exemplo de cabeçalhos
Os cabeçalhos na resposta http podem ser categorizados nos seguintes tipos. Abaixo está uma descrição do cabeçalho e um exemplo.
Cache-Control
O campo de cabeçalho geral Cache-Control é usado para especificar as diretivas que DEVEM ser obedecidas por todo o sistema de cache. A sintaxe é a seguinte:
Cache-Control : cache-request-directive|cache-response-directive
Um cliente ou servidor HTTP pode usar o Cache-controlcabeçalho geral para especificar parâmetros para o cache ou para solicitar certos tipos de documentos do cache. As diretivas de armazenamento em cache são especificadas em uma lista separada por vírgulas. Por exemplo:
Cache-control: no-cache
Conexão
O campo de cabeçalho geral de conexão permite que o remetente especifique as opções desejadas para aquela conexão específica e não deve ser comunicada por proxies em outras conexões. A seguir está a sintaxe simples para usar o cabeçalho de conexão:
Connection : "Connection"
HTTP / 1.1 define a opção de conexão "fechar" para o remetente sinalizar que a conexão será fechada após a conclusão da resposta. Por exemplo:
Connection: close
Por padrão, o HTTP 1.1 usa conexões persistentes, onde a conexão não fecha automaticamente após uma transação. O HTTP 1.0, por outro lado, não possui conexões persistentes por padrão. Se um cliente 1.0 deseja usar conexões persistentes, ele usa okeep-alive parâmetro da seguinte forma:
Connection: keep-alive
Encontro
Todos os carimbos de data / hora HTTP DEVEM ser representados no horário de Greenwich (GMT), sem exceção. Os aplicativos HTTP podem usar qualquer uma das três representações de carimbos de data / hora a seguir:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Transfer-Encoding
O campo de cabeçalho geral Transfer-Encoding indica que tipo de transformação foi aplicada ao corpo da mensagem para transferi-la com segurança entre o remetente e o destinatário. Isso não é o mesmo que codificação de conteúdo porque as codificações de transferência são uma propriedade da mensagem, não do corpo da entidade. A sintaxe do campo de cabeçalho Transfer-Encoding é a seguinte:
Transfer-Encoding: chunked
Todos os valores de codificação de transferência não diferenciam maiúsculas de minúsculas.
Melhoria
O cabeçalho geral de atualização permite que o cliente especifique quais protocolos de comunicação adicionais ele suporta e gostaria de usar se o servidor achar apropriado para alternar protocolos. Por exemplo:
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
O campo de cabeçalho de atualização se destina a fornecer um mecanismo simples para a transição de HTTP / 1.1 para algum outro protocolo incompatível.
Através da
O cabeçalho geral Via deve ser usado por gateways e proxies para indicar os protocolos e destinatários intermediários. Por exemplo, uma mensagem de solicitação pode ser enviada de um agente de usuário HTTP / 1.0 para um proxy interno denominado "fred", que usa HTTP / 1.1 para encaminhar a solicitação a um proxy público em nowhere.com, que conclui a solicitação por encaminhá-lo para o servidor de origem em www.ics.uci.edu. A solicitação recebida por www.ics.uci.edu teria então o seguinte campo de cabeçalho Via:
Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
O campo de cabeçalho de atualização se destina a fornecer um mecanismo simples para a transição de HTTP / 1.1 para algum outro protocolo incompatível.
Atenção
O cabeçalho geral de Aviso é usado para transportar informações adicionais sobre o status ou transformação de uma mensagem que pode não estar refletida na mensagem. Uma resposta pode conter mais de um cabeçalho de Aviso.
Warning : warn-code SP warn-agent SP warn-text SP warn-date
Exemplo
No exemplo a seguir, usamos o módulo urllib2 para obter uma resposta usando urlopen. Em seguida, aplicamos o método info () para obter as informações do cabeçalho dessa resposta.
import urllib2
response = urllib2.urlopen('http://www.tutorialspoint.com/python')
html = response.info()
print html
Quando executamos o programa acima, obtemos a seguinte saída -
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Cache-Control: max-age=2592000
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Jul 2018 11:06:07 GMT
Expires: Wed, 01 Aug 2018 11:06:07 GMT
Last-Modified: Sun, 01 Jul 2018 21:05:38 GMT
Server: ECS (tir/CDD1)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 22063
Connection: close