ID regione
REGION_ID
è un codice abbreviato che viene assegnato da Google
in base alla regione selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono essere simili ai codici paese e di provincia di uso comune. Per le app create dopo febbraio 2020, il campo 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 e sui limiti di richieste e risposte in App Engine. Per capire come App Engine riceve le richieste e invia risposte, consulta la sezione Come vengono gestite le richieste.
Intestazioni delle richieste
Una richiesta HTTP in entrata include le intestazioni HTTP inviate dal client. Per motivi di sicurezza, alcune intestazioni vengono igienizzate, modificate o rimosse da proxy intermedi prima che raggiungano l'applicazione.
Intestazioni rimosse dalle richieste in arrivo
Le seguenti intestazioni vengono rimosse dalle richieste in arrivo se vengono inviate da un client:
Intestazioni con nomi che corrispondono al pattern
X-Google-*
. Questo pattern del nome è riservato a Google.Intestazioni con nomi che corrispondono alle intestazioni specifiche di App Engine. Vengono rimosse solo le corrispondenze esatte (senza distinzione tra maiuscole e minuscole). Ad esempio, le intestazioni denominate
X-Appengine-Country
oX-AppEngine-Country
verranno rimosse, ma nonX-Appengine-Cntry
.
Accept-Encoding
Connection
Keep-Alive
Proxy-Authorization
TE
Trailer
Transfer-Encoding
Ad esempio, il server potrebbe inviare automaticamente una risposta con gzip a seconda del valore dell'intestazione della richiesta Accept-Encoding
. L'applicazione stessa non ha bisogno di sapere quali codifiche dei contenuti sono accettate dal client.
Richieste e WSGI
Il server determina quale oggetto applicazione Python chiamare da confrontando l'URL della richiesta con i pattern URL nel file di configurazione dell'app. Quindi chiama l'oggetto dell'applicazione utilizzando gli argomenti definiti nello standard WSGI. L'oggetto dell'applicazione esegue le azioni appropriate alla richiesta, quindi prepara una risposta e la restituisce come elenco di stringhe.
La maggior parte delle applicazioni utilizza un framework, come webapp2, per gestire le richieste WSGI.
webapp2
è incluso come parte del runtime Python 2.7.
Richieste e CGI
Il server determina quale script del gestore Python eseguire rispetto confrontando l'URL della richiesta con i pattern URL nel file di configurazione dell'app. ed esegue lo script in un ambiente popolato con i dati della richiesta. Come descritto nello standard CGI, il server inserisce i dati della richiesta in variabili di ambiente e nel flusso di input standard. Lo script esegue le azioni appropriate alla richiesta, quindi prepara una risposta e la inserisce nel flusso di output standard.
La maggior parte delle applicazioni utilizza una libreria per analizzare le richieste CGI e restituire risposte DOC, come il modulo CGI dalla libreria standard Python o un framework web che conosce il protocollo CGI (come webapp). Per i dettagli sulle variabili di ambiente e sul formato dei dati dei flussi di input, consulta la documentazione in CGI.
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, sotto forma di codice paese ISO 3166-1
alpha-2.
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
. La tua applicazione deve gestire il codice paese specialeZZ
(paese sconosciuto). X-Appengine-Region
- Nome della regione in cui ha avuto origine la richiesta. Questo valore è valido solo nel contesto del paese in
X -Appengine-Country
. Ad esempio, se il paese è "US" e la regione è "ca", significa "ca" significa "California", non il Canada. L'elenco completo dei valori validi per la regione è disponibile nello standard ISO-3166-2. X-Appengine-City
- Nome della città in cui ha avuto origine la richiesta. Ad esempio, una richiesta proveniente dalla città di Mountain View potrebbe avere il valore di intestazione
mountain view
. Non esiste un elenco canonico dei valori validi per questa intestazione. X-Appengine-CityLatLong
- Latitudine e longitudine della città da cui ha avuto origine la richiesta. Questa stringa potrebbe avere il seguente aspetto: "37.386051,-122.083851" per una richiesta a Mountain View.
X-Cloud-Trace-Context
- Un identificatore univoco per la richiesta utilizzata per Cloud Trace e Cloud Logging. Non esiste un'opzione per disattivare l'intestazione o scegliere la frequenza di campionamento per il tracciamento poiché tutte le app dell'ambiente standard di App Engine vengono tracciate automaticamente.
X-Forwarded-For: [CLIENT_IP(s)], [global forwarding rule IP]
Un elenco di indirizzi IP delimitato da virgole attraverso il quale la richiesta client è stata instradata. Il primo IP in questo elenco è solitamente l'IP del client che ha creato la richiesta. Gli IP successivi forniscono informazioni sui server proxy che hanno gestito anche la richiesta prima che raggiungesse il server delle applicazioni. Ad esempio:
X-Forwarded-For: clientIp, proxy1Ip, proxy2Ip
X-Forwarded-Proto [http | https]
Mostra
http
ohttps
in base al protocollo utilizzato dal client per la connessione all'applicazione.Il bilanciatore del carico Google Cloud termina tutte le connessioni
https
e quindi inoltra il traffico alle istanze App Engine suhttp
. Ad esempio, se un utente richiede l'accesso al tuo sito tramitehttps://PROJECT_ID.REGION_ID.r.appspot.com
, il valore dell'intestazione X-Forwarded-Proto èhttps
.
Inoltre, App Engine può impostare le seguenti intestazioni 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
Per i gestori
login:admin
ologin:required
specificati inapp.yaml
, App Engine aggiunge il seguente insieme di intestazioni:X-Appengine-User-Email
, con l'intestazione di esempio "ange@example.com"X-Appengine-Auth-Domain
,con l'intestazione di esempio "example.com"X-Appengine-User-ID
, con intestazione di esempio: "100979712376541954724"X-Appengine-User-Nickname
, con l'intestazione di esempio "ange"X-Appengine-User-Organization
, con l'intestazione di esempio "example.com"X-Appengine-User-Is-Admin
, con l'intestazione di esempio "1"
Il servizio coda di attività aggiunge intestazioni aggiuntive alle richieste che forniscono dettagli sull'attività nella richiesta e sulla coda a cui è associata.
Le richieste del servizio Cron aggiungono la seguente intestazione:
X-Appengine-Cron: true
Per maggiori dettagli, consulta la pagina Sicurezza degli URL per cron.
Le richieste provenienti da altre applicazioni App Engine includeranno un'intestazione che identifica l'applicazione che esegue la richiesta, se l'applicazione richiedente utilizza il servizio di recupero URL:
X-Appengine-Inbound-Appid
Per ulteriori dettagli, consulta la documentazione di App Identity.
Richiedi risposte
Questa documentazione relativa all'intestazione HTTP si applica solo alle risposte alle richieste HTTP in entrata. La risposta potrebbe essere modificata prima che venga restituita al client. Per le intestazioni HTTP relative alle richieste in uscita create dal codice di App Engine, consulta la documentazione di intestazione per URLFetch.
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 riaggiunto se la risposta è compressa da App Engine.
Vengono rimosse anche le intestazioni che contengono caratteri non ASCII nel nome o nel valore.
Intestazioni aggiunte o sostituite
Le seguenti intestazioni vengono aggiunte o sostituite nella risposta:
Cache-Control
,Expires
eVary
Queste intestazioni specificano il criterio di memorizzazione nella cache per i proxy web intermedi (come il Google Frontend e i provider di servizi Internet) e i browser. Se la tua app imposta queste intestazioni di risposta, in genere non vengono modificate, a meno che l'app non imposti anche un'intestazione
Set-Cookie
o la risposta venga generata per un utente che ha eseguito l'accesso utilizzando un account amministratore.Se la tua app imposta un'intestazione della risposta
Set-Cookie
, l'intestazioneCache-Control
verrà impostata suprivate
(se non è già più restrittiva) e l'intestazioneExpires
verrà impostata sulla data corrente (se non è già passata). In genere, questo consente ai browser di memorizzare nella cache la risposta, ma non i server proxy intermedi. Questo avviene per motivi di sicurezza, perché se la risposta è stata memorizzata nella cache pubblicamente, un altro utente potrebbe successivamente richiedere la stessa risorsa e recuperare il cookie del primo utente.Se utilizzi un framework basato su webob (ad esempio webapp o webapp2), il framework imposta l'intestazione
Cache-Control
suno-cache
per impostazione predefinita, quindi devi sostituirla se vuoi memorizzare la memorizzazione nella cache nei gestori di script.Se nella tua app non viene impostata l'intestazione della risposta
Cache-Control
, il server potrebbe impostarla suprivate
e aggiungere un'intestazioneVary: 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 e della risposta della richiesta
Content-Type
, il server potrebbe comprimere automaticamente il corpo della risposta, come descritto sopra. In questo caso, aggiunge un'intestazioneContent-Encoding: gzip
per indicare che il corpo è compresso. Per maggiori dettagli, consulta la sezione sulla compressione delle risposte.Content-Length
oTransfer-Encoding
Il server ignora sempre l'intestazione
Content-Length
restituita dall'applicazione. Verrà impostatoContent-Length
sulla lunghezza del corpo (dopo la compressione, se viene applicata la compressione) oppure verrà eliminatoContent-Length
e verrà utilizzata la codifica di trasferimento in blocchi (aggiungendo un'intestazioneTransfer-Encoding: chunked
).Content-Type
Se non specificato dall'applicazione, il server imposterà un'intestazione
Content-Type: text/html
predefinita.Date
Imposta la data e l'ora correnti.
Server
Imposta su
Google Frontend
. Il server di sviluppo la imposta suDevelopment/x
, dove x è il numero di versione.
Se accedi a pagine dinamiche sul tuo sito dopo aver eseguito l'accesso utilizzando un account amministratore, App Engine include le statistiche per ogni richiesta nelle intestazioni della risposta:
X-Appengine-Resource-Usage
- Le risorse utilizzate dalla richiesta, incluso il tempo lato server sotto forma di numero di millisecondi.
Le risposte con statistiche sull'utilizzo delle risorse non saranno memorizzabili nella cache.
Se l'intestazione X-Appengine-BlobKey
è nella risposta dell'applicazione, questa e l'intestazione X-Appengine-BlobRange
facoltativa verranno utilizzate per sostituire il corpo con tutti o parte dei contenuti del blob di blobstore. Se Content-Type
non è specificato dall'applicazione, verrà impostato il tipo MIME del blob. Se viene richiesto un intervallo, lo stato della risposta verrà modificato in 206 Partial Content
e verrà aggiunta un'intestazione Content-Range
. Le intestazioni X-Appengine-BlobKey
e X-Appengine-BlobRange
verranno rimosse dalla risposta. In genere, non è necessario impostare queste intestazioni autonomamente, in quanto sono impostate dalla classe blobstore_handlers.BlobstoreDownloadHandler
. Per maggiori dettagli, consulta la pagina Pubblicare un blob.
Intestazioni delle risposte impostate nella configurazione dell'applicazione
Le intestazioni delle risposte HTTP personalizzate possono essere impostate per URL per i percorsi dinamici e statici
nel file di configurazione dell'applicazione. Per ulteriori dettagli, consulta le sezioni http_headers
nella documentazione di configurazione.