Invio di richieste HTTP(S)

ID regione

Il REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata durante la creazione dell'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 App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

Questa pagina descrive come inviare richieste HTTP(S) dalla tua app App Engine.

Per informazioni dettagliate sui limiti di dimensione delle richieste e sulle intestazioni inviate in una richiesta di recupero URL, consulta Richieste in uscita.

Emettere una richiesta HTTP

Per inviare una richiesta HTTP in uscita, utilizza il pacchetto http come di consueto, ma crea il client utilizzando urlfetch.Client. urlfetch.Client restituisce un *http.Client che utilizza urlfetch.Transport, ovvero un'implementazione dell'interfaccia http.RoundTripper che effettua richieste utilizzando l'API URL Fetch.

Il seguente snippet mostra come eseguire una richiesta HTTP GET di base:

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/urlfetch"
)

func handler(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	client := urlfetch.Client(ctx)
	resp, err := client.Get("https://www.google.com/")
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	fmt.Fprintf(w, "HTTP GET returned status %v", resp.Status)
}

Disattivare i reindirizzamenti

Se utilizzi URL Fetch, il servizio URL Fetch sottostante segue fino a cinque reindirizzamenti per impostazione predefinita. Questi reindirizzamenti potrebbero inoltrare informazioni sensibili, come le intestazioni di autorizzazione, alla destinazione reindirizzata. Se la tua app non richiede reindirizzamenti HTTP, ti consigliamo di disattivarli.

Per indicare al servizio URL Fetch di non seguire i reindirizzamenti, imposta il campo CheckRedirect di http.Client restituito dal pacchetto urlfetch in modo che restituisca http.ErrUseLastResponse. Ciò si applica a appengine/urlfetch e appengine/v2/urlfetch. Ad esempio:

client := urlfetch.Client(ctx)
client.CheckRedirect = func(*http.Request, []*http.Request) error {
  return http.ErrUseLastResponse
}

Emettere una richiesta HTTPS

Per impostazione predefinita, il servizio URL Fetch sottostante convalida il certificato dell'host che contatta e rifiuta le richieste se il certificato non corrisponde. Non è necessario proteggere esplicitamente la richiesta.

Disattiva la convalida del certificato host

Per disattivare la convalida automatica del certificato host, puoi creare manualmente un Transport e impostare AllowInvalidServerCertificate su true.

Emettere una richiesta a un'altra app App Engine

Quando invii una richiesta a un'altra app App Engine, la tua app App Engine deve affermare la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid alla richiesta. Se istruisci il servizio URL Fetch a non seguire i reindirizzamenti, App Engine aggiungerà automaticamente questa intestazione alle richieste.

Per indicazioni su come disattivare i reindirizzamenti, vedi Disattivare i reindirizzamenti.

Passaggi successivi

Scopri di più sul servizio di recupero URL, ad esempio le intestazioni inviate in una richiesta di recupero URL in Richieste in uscita.