Invio di richieste HTTP(S)

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base all'area geografica selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici paese e provincia 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.

Questa pagina descrive come inviare richieste HTTP(S) dall'app App Engine.

Per maggiori dettagli sui limiti delle dimensioni delle richieste e sulle intestazioni inviate in una richiesta di recupero URL, consulta Richieste in uscita.

Invio di 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 le richieste utilizzando l'API URL Fetch.

Lo snippet seguente mostra come eseguire una richiesta GET HTTP 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)
}

Disattivazione dei reindirizzamenti

Se utilizzi il recupero URL, per impostazione predefinita il relativo servizio sottostante segue fino a cinque reindirizzamenti. 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 di recupero URL di non seguire i reindirizzamenti, imposta il campo CheckRedirect di http.Client restituito dal pacchetto urlfetch in modo che restituisca http.ErrUseLastResponse. Vale per 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

Nell'API Go non è necessario proteggere esplicitamente la richiesta. Il servizio sottostante di recupero URL convalida il certificato dell'host che contatta per impostazione predefinita e rifiuta le richieste se il certificato non corrisponde.

Disabilitazione della convalida del certificato host

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

Emissione di una richiesta a un'altra app App Engine

Quando invii una richiesta a un'altra app App Engine, questa deve dichiarare la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid alla richiesta. Se indichi al servizio di recupero URL di non seguire i reindirizzamenti, App Engine aggiungerà questa intestazione alle richieste automaticamente.

Per istruzioni su come disattivare i reindirizzamenti, consulta la sezione Disattivazione dei reindirizzamenti.

Passaggi successivi

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