Cabeçalhos HTTP

Os cabeçalhos HTTP são strings de pares name:value (nome e valor separados por dois pontos) usados para comunicar informações adicionais e metadados entre um cliente (geralmente um navegador de internet) e um aplicativo em um servidor. Esta informação pode incluir como os dados são codificados, como o servidor deve tratar os dados, a idade do documento e muito mais.

Os cabeçalhos de resposta (do aplicativo para o cliente) são parte da resposta do aplicativo e podem conter informações como a localização do servidor, nome do servidor, etc.

Os cabeçalhos de solicitação (do cliente para o aplicativo) são úteis caso você queira personalizar o seu aplicativo. Alguns exemplos são:

  • Reportando diferentes tipos de conteúdo por região do cliente usando CF-IPCountry.
  • Usando CF-Connecting-IP para registrar o IP do cliente no registro de atividades do aplicativo.
  • Execução de depuração ou monitoramento de sessões de usuários usando X-Request-ID.

Cabeçalhos de solicitação adicionados pela Kinsta

Quando você implanta um aplicativo na Kinsta, os seguintes cabeçalhos são usados para enviar informações para o aplicativo:

  • Host: O cabeçalho do host especifica o nome do host e o número da porta do servidor que está sendo solicitado.
  • X-Request-ID: Usado para identificar uma solicitação entre o cliente e o servidor. Este cabeçalho pode ser útil para fins de depuração.
  • X-Real-IP: Especifica o endereço IP real do cliente que fez a solicitação. Este cabeçalho é comumente usado por reverse proxies e balanceadores de carga para indicar o endereço IP original do cliente.
  • X-Forwarded-For: Usado para especificar o endereço IP do cliente e também pode conter uma lista de endereços IP caso a solicitação passe por múltiplos proxies.
  • X-Forwarded-Host: Especifica o host original solicitado pelo cliente.
  • X-Forwarded-Port: Especifica a porta usada pelo cliente para fazer a solicitação.
  • X-Forwarded-Proto: Especifica o protocolo que o cliente usa para fazer o pedido, como “HTTP” ou “HTTPS”
  • X-Forwarded-Scheme: Especifica o schema que o cliente usa para fazer o pedido, como “HTTP” ou “HTTPS”
  • X-Scheme: O cabeçalho é similar a X-Forwarded-Scheme, sendo usado para indicar o schema original solicitado pelo cliente.
  • X-Original-Forwarded-For: Especifica o endereço IP original do cliente em uma solicitação que passou por múltiplos proxies.
  • Accept-Encoding: Especifica os tipos de codificação que o cliente pode aceitar na resposta, tais como gzip ou deflate.
  • CF-Ray: Um identificador único gerado pelo serviço Cloudflare para cada requisição.
  • CF-Visitor: Usado pelo Cloudflare para transmitir informações sobre o navegador e o dispositivo do cliente para o servidor.
  • CF-EW-Via: Usado pelo serviço Cloudflare Edge Workers para indicar que um Edge Worker processou uma solicitação.
  • CDN-Loop: Usado por algumas redes de entrega de conteúdo para indicar que uma solicitação está presa em um loop e precisa ser encerrada.
  • Accept: Especifica os tipos de mídia que o cliente pode lidar na resposta, tais como text/html ou application/json.
  • User-Agent: Especifica a cadeia de agentes de usuário do cliente, que pode ser usada para identificar o navegador e o sistema operacional do cliente.
  • CF-Connecting-IP: Especifica o endereço IP do cliente que está se conectando ao servidor através da rede Cloudflare.
  • CF-Worker: Usado para indicar que um trabalhador (Worker) do Cloudflare processou uma solicitação.
  • CF-IPCountry: Especifica o código do país do endereço IP do cliente, conforme determinado pelo Cloudflare.

Visualizando os cabeçalhos de solicitação

Enquanto os cabeçalhos de resposta podem ser visualizados com ferramentas como Verificador de Status HTTP e Redirecionamento, curl, Postman, Insomnia, etc., visualizar os cabeçalhos de solicitação é um pouco diferente. Para visualizar os cabeçalhos de solicitação, você pode usar o código do seu aplicativo para ver e relatar os cabeçalhos enviados a ela. Aqui está um exemplo disto usando o Python:

do http.server import BaseHTTPRequestHandler, HTTPServer
import loggingclass RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
logging.info("GET request,nPath: %snHeaders:n%sn",
str(self.path), str(self.headers))
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
mensagem = f"{self.headers}"
self.wfile.write(bytes(mensagem, 'utf-8'))
returndef run(server_class=HTTPServer, handler_class=RequestHandler, port=8080):
logging.basicConfig(level=logging.INFO)
server_address = ('', porto)
httpd = server_class(server_address, handler_class)
logging.info('Iniciando httpd...n')
tente:
httpd.serve_forever()
exceto KeyboardInterrupt:
passe
httpd.server_close()
logging.info('Parando httpd...n')if __name__ == '__main__':
de sys import argvif len(argv) == 2:
run(port=int(argv[1]))
senão:
run()
Este artigo foi útil?