HTTP(S)-Anfragen senden

Regions-ID

REGION_ID ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.

Hier finden Sie weitere Informationen zu Regions-IDs.

Auf dieser Seite wird beschrieben, wie Sie in Ihrer App Engine-Anwendung HTTP(S)-Anfragen senden.

Weitere Informationen zu Größenbeschränkungen für Anfragen und dazu, welche Header in einer URL-Abrufanfrage gesendet werden, finden Sie unter Ausgehende Anfragen.

HTTP-Request senden

Zum Senden einer ausgehenden HTTP-Anfrage verwenden Sie wie gewohnt das http-Paket, erstellen den Client aber mithilfe von urlfetch.Client. urlfetch.Client gibt ein *http.Client zurück, das urlfetch.Transport verwendet. Dabei handelt es sich um eine Implementierung der http.RoundTripper-Schnittstelle, die Anfragen über die URL Fetch-API stellt.

Das folgende Snippet veranschaulicht, wie eine grundlegende HTTP-GET-Anfrage ausgeführt wird:

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)
}

Weiterleitungen deaktivieren

Wenn Sie URL-Abruf verwenden, folgt der zugrunde liegende URL-Abrufdienst standardmäßig bis zu fünf Weiterleitungen. Diese Weiterleitungen können vertrauliche Informationen wie Autorisierungsheader an das Weiterleitungsziel weiterleiten. Wenn Ihre Anwendung keine HTTP-Weiterleitungen erfordert, empfehlen wir, die Weiterleitungen zu deaktivieren.

Wenn Sie den URL-Abrufdienst so konfigurieren möchten, dass er keiner Weiterleitung folgt, legen Sie das Feld CheckRedirect des http.Client fest, das von urlfetch-Paket zurückgegeben wird, um http.ErrUseLastResponse zurückzugeben. Dies gilt für appengine/urlfetch und appengine/v2/urlfetch. Beispiel:

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

HTTPS-Request senden

In der Go API müssen Sie den Request nicht explizit sichern. Der zugrunde liegende URL-Abrufdienst validiert das Zertifikat des Hosts, mit dem er sich standardmäßig verbindet, und lehnt Requests ab, wenn das Zertifikat nicht übereinstimmt.

Validierung des Hostzertifikats deaktivieren

Um die automatische Validierung des Hostzertifikats zu deaktivieren, können Sie manuell einen Transport erstellen und AllowInvalidServerCertificate auf true setzen.

Requests an andere App Engine-Anwendungen senden

Wenn Sie eine Anfrage an eine andere App Engine-Anwendung senden, muss die Identität dieser Anwendung bestätigt werden. Geben Sie zusätzlich in die Anfrage den Header X-Appengine-Inbound-Appid ein. Wenn Sie den URL-Abrufdienst so konfigurieren, dass er keiner Weiterleitung folgt, fügt App Engine diesen Header automatisch zu Anfragen hinzu.

Informationen zum Deaktivieren von Weiterleitungen finden Sie unter Weiterleitungen deaktivieren.

Nächste Schritte

Unter Ausgehende Anfragen finden Sie weitere Informationen zum URL-Abrufdienst, z. B. zu den Headern, die in einer URL-Abrufanfrage gesendet werden.