Intestazioni di richiesta e risposte

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

Utilizza questa pagina di riferimento per i dettagli sulle intestazioni HTTP supportate. nonché i limiti di richieste e risposte in App Engine. Per capire come App Engine riceve le richieste e invia le risposte, consulta la sezione Come vengono gestite le richieste.

Intestazioni delle richieste

Una richiesta HTTP in arrivo include le intestazioni HTTP inviate dal client. Per motivi di sicurezza, alcune intestazioni vengono sottoposte a sanificazione, modificate o rimosse dai proxy intermedi prima di raggiungere l'applicazione.

Intestazioni rimosse dalle richieste in arrivo

Le seguenti intestazioni vengono rimosse dalle richieste in entrata se un client le invia:

  • Intestazioni con nomi corrispondenti al pattern X-Google-*. Questo pattern di nome è riservato a Google.

  • Intestazioni con nomi corrispondenti alle intestazioni specifiche di App Engine. Solo le corrispondenze esatte senza distinzione tra maiuscole e minuscole vengono rimosse. Ad esempio, intestazioni denominate X-Appengine-Country o X-AppEngine-Country verranno rimossi, ma X-Appengine-Cntry no.

Inoltre, le seguenti intestazioni vengono rimosse dalle richieste in entrata perché sono correlati al trasferimento dei dati HTTP tra il client e il server:

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

Ad esempio, il server potrebbe inviare automaticamente una risposta in formato gzip a seconda il valore dell'intestazione della richiesta Accept-Encoding. L'applicazione stessa non è necessario sapere quali codifiche dei contenuti possono essere accettate dal client.

Intestazioni specifiche di App Engine

Come servizio per l'app, App Engine aggiunge le seguenti intestazioni a tutte le richieste:

X-Appengine-Country
Paese da cui ha avuto origine la richiesta, come ISO 3166-1 alpha-2, il codice paese. App Engine determina questo codice dall'indirizzo IP del client. Tieni presente che le informazioni sul paese non derivano dal database WHOIS. È possibile che un indirizzo IP con informazioni sul paese nel database WHOIS non abbia informazioni sul paese nell'intestazione X-Appengine-Country. L'applicazione dovrebbe gestire il codice paese speciale ZZ (paese sconosciuto).
X-Appengine-Region
Nome della regione da cui ha avuto origine la richiesta. Questo valore rende nel contesto del paese in X -Appengine-Country. Ad esempio, se il paese è "US" e la regione è "ca", ovvero "ca" significa "California", non in Canada. L'elenco completo dei valori regione validi è disponibile nello standard ISO-3166-2.
X-Appengine-City
Nome della città da cui ha avuto origine la richiesta. Ad esempio, una richiesta proveniente dalla città di Mountain View potrebbe avere il valore dell'intestazione mountain view. Non esiste un elenco canonico di valori validi per questa intestazione. Se la città non può essere risolta, il valore dell'intestazione viene impostato su ?.
X-Appengine-CityLatLong
Latitudine e longitudine della città da cui ha avuto origine la richiesta. Questa stringa potrebbe essere "37.386051,-122.083851" per una richiesta da Mountain View. Se la città non può essere risolta, il valore dell'intestazione è impostato su 0.000000,0.000000.
X-Cloud-Trace-Context
Un identificatore univoco per la richiesta utilizzata per Cloud Trace e Cloud Logging. Non è possibile disattivare questo intestazione o scegliere la frequenza di campionamento per il monitoraggio, poiché tutte le app dell'ambiente standard di App Engine vengono monitorate automaticamente.
X-Forwarded-For: [CLIENT_IP(s)], [global forwarding rule IP]

Un elenco separato da virgole di indirizzi IP attraverso i quali è stata indirizzata la richiesta del client. In genere, il primo IP in questo elenco è quello del client che ha creato la richiesta. Gli IP successivi forniscono informazioni sui server proxy che gestisce la richiesta prima che raggiungesse il server delle applicazioni. Per esempio:

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

Mostra http o https in base al protocollo utilizzato dal client per connettersi alla tua applicazione.

Il bilanciatore del carico Google Cloud termina tutte le connessioni https inoltra il traffico alle istanze di App Engine su http. Ad esempio, se un utente richiede l'accesso al tuo sito tramite https://PROJECT_ID.REGION_ID.r.appspot.com, il valore dell'intestazione X-Forwarded-Proto è https.

Inoltre, App Engine può impostare le seguenti intestazioni che sono per per uso interno da parte di App Engine:

  • 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

I servizi App Engine possono aggiungere altre intestazioni di richiesta:

  • Le richieste provenienti dal servizio Cron aggiungino la seguente intestazione:

    X-Appengine-Cron: true

    Per ulteriori dettagli, consulta Protezione degli URL per cron.

Richiedere risposte

Questa documentazione delle intestazioni HTTP si applica solo alle risposte alle richieste HTTP in entrata. La risposta può essere modificata prima di essere restituita al client.

Intestazioni rimosse

Le seguenti intestazioni vengono ignorate e rimosse dalla risposta:

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

* Può essere riaggiunta se la risposta viene compressa da App Engine.

Vengono rimosse anche le intestazioni con caratteri non ASCII nel nome o nel valore.

Intestazioni aggiunte o sostituite

Nella risposta vengono aggiunte o sostituite le seguenti intestazioni:

Cache-Control, Expires e Vary

Queste intestazioni specificano i criteri di memorizzazione nella cache per i proxy web intermedi (come il frontend di Google e i fornitori di servizi internet) e i browser. Se la tua app imposta queste intestazioni di risposta, in genere non vengono modificate, a meno che non imposti anche un'intestazione Set-Cookie o la risposta non venga generata per un utente che ha eseguito l'accesso utilizzando un account amministratore.

Se la tua app imposta un'intestazione di risposta Set-Cookie, l'intestazione Cache-Control verrà impostata su private (se non è già più restrittiva) e l'intestazione Expires verrà impostata sulla data corrente (se non è già nel passato). In genere, ciò consente ai browser di memorizzare nella cache la risposta, ma non un accesso intermedio server proxy. Questo accade per motivi di sicurezza, poiché se la risposta fosse memorizzata nella cache pubblicamente, un altro utente potrebbe successivamente richiedere la stessa risorsa e recuperare il cookie del primo utente.

Se l'app non imposta l'intestazione di risposta Cache-Control, il server potrebbe impostarla su private e aggiungere un'intestazione Vary: Accept-Encoding.

Per ulteriori informazioni sulla memorizzazione nella cache, incluso l'elenco dei valori Vary supportati da Google Frontend, consulta Memorizzazione nella cache delle risposte.

Content-Encoding

A seconda delle intestazioni della richiesta e della risposta Content-Type, il server potrebbe comprimere automaticamente il corpo della risposta, come descritto sopra. In questo caso, viene aggiunta un'intestazione Content-Encoding: gzip per indicare che il corpo è compresso. Per ulteriori dettagli, consulta la sezione sulla compressione delle risposte.

Content-Length o Transfer-Encoding

Il server ignora sempre l'intestazione Content-Length restituita dal un'applicazione. Imposterà Content-Length sulla lunghezza del corpo (dopo la compressione, se applicata) oppure eliminerà Content-Length e userà la codifica di trasferimento suddivisa in blocchi (aggiungendo un'intestazione Transfer-Encoding: chunked). Se Content-Length non è impostato correttamente per i runtime di seconda generazione, App Engine restituisce una risposta 500.

Date

Imposta la data e l'ora correnti.

Server
Impostato su Google Frontend. Il server di sviluppo lo imposta su Development/x, dove x è il numero di versione.

Se accedi a pagine dinamiche sul tuo sito dopo aver eseguito l'accesso utilizzando un amministratore l'account di servizio, App Engine include le statistiche per ogni richiesta nella risposta intestazioni:

X-Appengine-Resource-Usage
Le risorse utilizzate dalla richiesta, incluso il tempo lato server come numero di millisecondi.

Le risposte con statistiche sull'utilizzo delle risorse non verranno memorizzate nella cache.

Intestazioni della risposta impostate nella configurazione dell'applicazione

Le intestazioni delle risposte HTTP personalizzate possono essere impostate per ogni URL per i percorsi dinamici e statici in il file di configurazione dell'applicazione. Vedi le sezioni http_headers in configurazione documentazione per ulteriori dettagli.