Recupero URL per i servizi in bundle legacy

Questa pagina descrive come le applicazioni App Engine utilizzano il servizio di recupero URL per emettere richieste HTTP e HTTPS e ricevere risposte. Per visualizzare esempi di codice che mostrano come inviare richieste HTTP e HTTPS dalla tua applicazione App Engine, consulta Invio di richieste HTTP(S).

Se hai configurato l'accesso VPC serverless o se utilizzi l'API Sockets, devi impedire a URL Fetch di gestire le richieste. URL Fetch causa l'esito negativo delle richieste alla rete VPC o all'API Sockets. Dopo aver disabilitato il metodo di recupero URL, la libreria Python standard per gestire le richieste HTTP. Se hai bisogno delle funzionalità fornite da URL Fetch per richieste specifiche, puoi usare la libreria urlfetch direttamente per quelli richieste specifiche.

Richieste

App Engine utilizza il servizio di recupero URL per emettere richieste in uscita. In Python, puoi utilizzare httplib, urllib e urllib2 per effettuare richieste HTTP. in un'applicazione App Engine, ciascuna libreria eseguirà queste richieste utilizzando il servizio di recupero URL. Puoi utilizzare anche urlfetch direttamente nella libreria.

Protocolli di richiesta

Un'applicazione può recuperare un URL tramite HTTP o HTTPS. Il protocollo viene dedotta osservando il protocollo nell'URL di destinazione.

L'URL da recuperare può utilizzare qualsiasi numero di porta nei seguenti intervalli:

  • 80-90
  • 440-450
  • 1024-65535.

Se la porta non è menzionata nell'URL, si riferisce alla porta protocollo. Le richieste HTTP vengono eseguite sulla porta 80 e le richieste HTTPS sulla porta 443.

Metodi di richiesta

Se invii richieste tramite il servizio di recupero URL, puoi utilizzare uno qualsiasi dei seguenti metodi HTTP:

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH

Una richiesta può includere intestazioni HTTP e, per POST, PUT e PATCH richieste, un payload.

Richiedi proxying

Tieni presente che il servizio di recupero URL utilizza un proxy compatibile con HTTP/1.1 per recuperare il risultato.

Per evitare che un'applicazione causi una ricorrenza infinita di richieste, è necessario gestore di richieste non è autorizzato a recuperare il proprio URL. È ancora che sia possibile causare una ricorrenza infinita con altri mezzi, quindi fai attenzione se è possibile indurre la tua applicazione a recuperare richieste per URL forniti dall'utente.

Intestazioni delle richieste

L'applicazione può impostare intestazioni HTTP per la richiesta in uscita.

Quando invii una richiesta POST HTTP, se un'intestazione Content-Type non viene impostata esplicitamente, viene impostata su x-www-form-urlencoded. Questo è il tipo di contenuti utilizzato dai moduli web.

Per motivi di sicurezza, le seguenti intestazioni non possono essere modificate dall'applicazione:

  • Content-Length
  • Host
  • Vary
  • Via
  • X-Appengine-Inbound-Appid
  • X-Forwarded-For
  • X-ProxyUser-IP

Queste intestazioni sono impostate su valori precisi da App Engine appropriato. Ad esempio, App Engine calcola l'intestazione Content-Length dai dati della richiesta e la aggiunge alla richiesta prima dell'invio.

Le seguenti intestazioni indicano l'ID applicazione dell'app richiedente:

  • User-Agent. Questa intestazione può essere modificata, ma App Engine aggiungerà una stringa di identificatore per consentire ai server di identificare le richieste di App Engine. La stringa aggiunta ha il formato "AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)", dove APPID è l'identificatore dell'app.
  • X-Appengine-Inbound-Appid. Questa intestazione non può essere modificata e viene aggiunta automaticamente se la richiesta viene inviata tramite il servizio di recupero dell'URL quando il parametro di reindirizzamento seguito è impostato su False.

Timeout delle richieste

Puoi impostare una scadenza o un timeout per una richiesta. Per impostazione predefinita, il timeout per una richiesta è 10 secondi.

Puoi inviare richieste sincrone e richieste asincrone. Il seguente comportamento si applica all'API URL Fetch:

  • Richieste sincrone: la chiamata di recupero attende che il telecomando l'host restituisce un risultato, quindi il controllo all'applicazione. Se viene superato il tempo massimo di attesa per la chiamata di recupero, viene restituito l'errore della chiamata genera un'eccezione.
  • Richieste asincrone: il servizio di recupero URL avvia la richiesta. e restituisce immediatamente con un oggetto. L'applicazione può eseguire altre attività durante il recupero dell'URL. Quando l'applicazione richiede i risultati, viene chiamato un metodo sull'oggetto, che attende per completare la richiesta, se necessario, quindi restituisce il risultato. Se presente Le richieste di recupero dell'URL sono in attesa quando il gestore di richieste esce, il server delle applicazioni attende che tutte le richieste rimanenti vengano restituite o raggiungere la scadenza prima di restituire una risposta all'utente.

Connessioni sicure e HTTPS

L'applicazione può recuperare un URL in modo sicuro utilizzando HTTPS per connettersi a server sicuri. I dati di richiesta e risposta vengono trasmessi in forma criptata.

Nell'API Python, il proxy di recupero URL non convalida l'host di cui si trova. contatti per impostazione predefinita. Puoi aggiungere un elemento validate_certificate facoltativo all'argomento fetch() per abilitare la convalida dell'host.

Risposte

Se utilizzi l'API URL Fetch, tieni presente che il servizio URL Fetch restituisce tutti i dati di risposta, inclusi la risposta, il codice, le intestazioni e il corpo.

Per impostazione predefinita, se il servizio di recupero URL riceve una risposta con un codice di reindirizzamento, il servizio seguirà il reindirizzamento. Il servizio seguirà fino a cinque risposte di reindirizzamento, quindi restituirà la risorsa finale. Puoi istruire il servizio di recupero dell'URL a non seguire i reindirizzamenti e restituire invece una risposta di reindirizzamento all'applicazione.

Utilizzare URL Fetch sul server di sviluppo

Quando l'applicazione è in esecuzione sul server di sviluppo di App Engine sul tuo computer, le chiamate al servizio di recupero URL vengono gestite localmente. Il server di sviluppo recupera gli URL contattando gli host remoti direttamente dal computer, utilizzando la configurazione di rete utilizzata dal computer per accedere a internet.

Quando testi le funzionalità della tua applicazione che recuperano gli URL, assicurati che il tuo computer possa accedere agli host remoti.

Quote e limiti per il recupero degli URL

Per informazioni sulle quote del servizio di recupero dell'URL, consulta Quote. Per visualizzare l'utilizzo attuale della quota l'applicazione, vai alla pagina Dettagli quota nella console Google Cloud.

Vai alla pagina Dettagli quota

Inoltre, all'utilizzo del servizio di recupero dell'URL si applicano i seguenti limiti:

Limite Importo
Dimensioni richiesta 10 MB
Dimensioni dell'intestazione della richiesta 16 kB (tieni presente che questo limita la lunghezza massima del URL che può essere specificato nell'intestazione)
Dimensioni risposta 32 megabyte

Passaggi successivi

Esegui esempi di codice e ottieni indicazioni su come inviare richieste dal tuo nell'emissione di richieste HTTP(S).