Solicite cabeçalhos e respostas

ID da região

O REGION_ID é um código abreviado que o Google atribui com base na região que você selecionou ao criar o aplicativo. O código não corresponde a um país ou estado, embora alguns IDs de região sejam semelhantes aos códigos de país e estado mais usados. A inclusão de REGION_ID.r em URLs do App Engine é opcional para aplicativos que já existem e, em breve, será obrigatória para todos os aplicativos novos.

Para garantir uma transição tranquila, estamos atualizando gradativamente o App Engine para usar IDs de região. Se ainda não tivermos atualizado seu projeto do Google Cloud, você não verá um ID de região para o aplicativo. Como o ID é opcional para os aplicativos atuais, não é necessário atualizar os URLs ou fazer outras alterações quando o ID de região está disponível para os aplicativos atuais.

Saiba mais sobre IDs da região.

Use esta página de referência para saber detalhes sobre os cabeçalhos HTTP compatíveis, além dos limites de solicitação e resposta no App Engine. Para entender como funciona o recebimento de solicitações e o envio de respostas no App Engine, consulte Como as solicitações são processadas.

Cabeçalhos de solicitação

Uma solicitação HTTP recebida inclui os cabeçalhos HTTP enviados pelo cliente. Para fins de segurança, alguns cabeçalhos são limpos, alterados ou removidos por proxies intermediários antes de chegar ao aplicativo.

Cabeçalhos removidos de solicitações recebidas

Os seguintes cabeçalhos são removidos das solicitações recebidas se um cliente as enviar:

  • Cabeçalhos com nomes que correspondem ao padrão X-Google-*. Esse padrão de nome é reservado para o Google.

  • Cabeçalhos com nomes que correspondem a cabeçalhos específicos do App Engine. Somente correspondências exatas e sem distinção entre maiúsculas e minúsculas são removidas. Por exemplo, os cabeçalhos chamados X-Appengine-Country ou X-AppEngine-Country serão removidos, mas X-Appengine-Cntry não.

Além disso, os seguintes cabeçalhos são removidos das solicitações recebidas porque estão relacionados à transferência dos dados HTTP entre o cliente e o servidor:

  • Accept-Encoding
  • Connection
  • Keep-Alive
  • Proxy-Authorization
  • TE
  • Trailer
  • Transfer-Encoding

Por exemplo, o servidor pode enviar automaticamente uma resposta compactada com gzip, dependendo do valor do cabeçalho da solicitação Accept-Encoding. O aplicativo em si não precisa saber quais codificações de conteúdo o cliente pode aceitar.

Cabeçalhos específicos do App Engine

Como um serviço ao aplicativo, o App Engine adiciona estes cabeçalhos a todas as solicitações:

X-Appengine-Country
País de origem da solicitação, como um código ISO 3166-1 alfa-2 de país. O App Engine determina esse código com base no endereço IP do cliente. Observe que as informações do país não são derivadas do banco de dados WHOIS. É possível que um endereço IP com informações de país no banco de dados WHOIS não tenha informações de país no cabeçalho X-Appengine-Country. O aplicativo precisa processar o código especial de país ZZ (país desconhecido).
X-Appengine-Region
Nome da região de origem da solicitação. Esse valor só faz sentido no contexto do país em X -Appengine-Country. Por exemplo, se o país é "US" e a região é "ca", esse "ca" significa "Califórnia", e não Canadá. Você pode encontrar a lista completa de valores regionais válidos no padrão ISO-3166-2.
X-Appengine-City
Nome da cidade de origem da solicitação. Por exemplo, uma solicitação da cidade de Mountain View pode ter o valor de cabeçalho mountain view. Não há uma lista canônica de valores válidos para esse cabeçalho.
X-Appengine-CityLatLong
Latitude e longitude da cidade de origem da solicitação. Essa string pode ser "37.386051, -122.083851" para uma solicitação de Mountain View.
X-Cloud-Trace-Context
Um identificador exclusivo da solicitação usada para o Cloud Trace e o Cloud Logging.
X-Forwarded-For: [CLIENT_IP(s)], [global forwarding rule IP]

Uma lista delimitada por vírgulas de endereços IP por meio dos quais a solicitação do cliente foi roteada. O primeiro IP da lista geralmente é o IP do cliente que criou a solicitação. Os IPs subsequentes fornecem informações sobre servidores proxy que também processaram a solicitação antes de ela chegar ao servidor do aplicativo. Exemplo:

X-Forwarded-For: clientIp, proxy1Ip, proxy2Ip
X-Forwarded-Proto [http | https]

Mostra http ou https com base no protocolo que o cliente usou para se conectar ao aplicativo.

O balanceador de carga do Google Cloud encerra todas as conexões de https e, em seguida, encaminha o tráfego para as instâncias do App Engine em http. Por exemplo, se um usuário solicitar acesso ao seu site por meio de https://PROJECT_ID.REGION_ID.r.appspot.com, o valor do cabeçalho X- Forwarded-Proto será https.

Além disso, o App Engine pode definir os seguintes cabeçalhos para uso interno:

  • X-Appengine-Https
  • X-Appengine-User-IP
  • X-Appengine-Api-Ticket
  • X-Appengine-Request-Log-Id
  • X-Appengine-Default-Version-Hostname
  • X-Appengine-Timeout-Ms
Os serviços do App Engine podem adicionar outros cabeçalhos de solicitação:

  • As solicitações do Cron Service adicionam o seguinte cabeçalho:

    X-Appengine-Cron: true

    Consulte Como proteger URLs para cron para mais detalhes.

  • As solicitações provenientes de outros aplicativos do App Engine incluirão um cabeçalho que identifica o aplicativo que faz a solicitação, se o aplicativo solicitante estiver usando o serviço de busca de URL:

    X-Appengine-Inbound-Appid

Respostas a solicitações

Esta documentação de cabeçalho HTTP aplica-se apenas a respostas a solicitações HTTP de entrada. A resposta pode ser modificada antes de retornar ao cliente.

Cabeçalhos removidos

Os seguintes cabeçalhos são ignorados e removidos da resposta:

  • Connection
  • Content-Encoding*
  • Content-Length
  • Date
  • Keep-Alive
  • Proxy-Authenticate
  • Server
  • Trailer
  • Transfer-Encoding
  • Upgrade

* Pode ser adicionado novamente se a resposta for compactada pelo App Engine.

Os cabeçalhos com caracteres que não sejam ASCII no nome ou no valor também são removidos.

Cabeçalhos adicionados ou substituídos

Os seguintes cabeçalhos são adicionados ou substituídos na resposta:

Cache-Control, Expires e Vary

Esses cabeçalhos especificam a política de armazenamento em cache para proxies da Web intermediários (como o Google Frontend e os provedores de acesso à Internet) e navegadores. Se o app definir esses cabeçalhos de resposta, eles geralmente não serão modificados, a menos que o app também defina um cabeçalho Set-Cookie ou a resposta seja gerada para um usuário que fez login usando uma conta de administrador.

Se o aplicativo definir um cabeçalho de resposta Set-Cookie, o cabeçalho Cache-Control será definido como private (se já não for mais restritivo) e o cabeçalho Expires será definido como a data atual (se não estiver no passado). Dessa forma, os navegadores geralmente podem armazenar a resposta em cache, mas não em servidores proxy intermediários. Isso ocorre por questões de segurança porque, se a resposta for armazenada em cache publicamente, outro usuário poderá posteriormente solicitar o mesmo recurso e recuperar o cookie do primeiro usuário.

Se o aplicativo não definir o cabeçalho de resposta Cache-Control, o servidor poderá configurá-lo como private e adicionar um cabeçalho Vary: Accept-Encoding.

Para mais informações sobre o armazenamento em cache, incluindo a lista de valores Vary aceitos pelo front-end do Google, consulte Cache de resposta.

Content-Encoding

Dependendo dos cabeçalhos de solicitação e do Content-Type de resposta, o servidor poderá compactar automaticamente o corpo de resposta, como descrito anteriormente. Nesse caso, ele adiciona um cabeçalho Content-Encoding: gzip para indicar que o corpo está compactado. Consulte a seção sobre compactação de resposta para ver mais detalhes.

Content-Length ou Transfer-Encoding

O servidor sempre ignora o cabeçalho Content-Length retornado pelo aplicativo. Ele configura Content-Length com o comprimento do corpo (após a compactação, caso seja aplicada) ou exclui Content-Length e usa a codificação de transferência fragmentada (acrescentando um cabeçalho Transfer-Encoding: chunked).

Content-Type

Se não for especificado pelo aplicativo, o servidor definirá um cabeçalho Content-Type: text/html padrão.

Date

Define data e hora atuais.

Server

Defina como Google Frontend. No servidor de desenvolvimento, ele é definido como Development/x, em que x é o número da versão.

Se você acessar páginas dinâmicas em seu site enquanto estiver conectado com uma conta de administrador, os cabeçalhos de resposta do App Engine terão estatísticas por solicitação:

X-Appengine-Estimated-CPM-US-Dollars
Uma estimativa de quanto custam 1.000 solicitações semelhantes a esta em dólares americanos.
X-Appengine-Resource-Usage
Os recursos utilizados pela solicitação, incluindo o tempo do servidor em milissegundos.

As respostas com estatísticas de uso de recursos não poderão ser armazenadas em cache.

Cabeçalhos de resposta configurados no aplicativo

É possível configurar os cabeçalhos de resposta HTTP personalizados por URL para caminhos dinâmicos e estáticos no arquivo de configuração do aplicativo. Consulte as seções http_headers na documentação de configuração para mais detalhes.