HTTPS-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 mit dem URL-Abrufdienst für Laufzeiten der zweiten Generation HTTP(S)-Anfragen über Ihre App Engine-Anwendung ausgeben.

Bevor Sie der Anleitung auf dieser Seite folgen, sollten Sie sprachspezifische idiomatische Lösungen verwenden, um HTTP(S)-Anfragen zu senden, bevor Sie URL Fetch verwenden. Der primäre Anwendungsfall für die Verwendung von URL Fetch besteht darin, HTTP(S)-Anfragen an eine andere App Engine-Anwendung zu senden und die Identität Ihrer Anwendung über diese Anfrage zu bestätigen.

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

HTTP-Anfrage senden

Wenn Sie den URL-Abrufdienst zur Ausgabe ausgehender HTTP(S)-Anfragen verwenden möchten, rufen Sie das urlfetch Paket auf.

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. Dies ist 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/v2"
    "google.golang.org/appengine/v2/urlfetch"
)

func handler(w http.ResponseWriter, r *http.Request) {
    ctx := appengine.NewContext(r)
    client := urlfetch.Client(ctx)
    resp, err := client.Get("http://www.google.com/")
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }
    defer resp.Body.Close()
    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-Anfrage senden

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

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 URL Fetch zum Ausgeben einer Anfrage an eine andere App Engine-Anwendung verwenden, fügt die Anwendung der Anfrage den Header X-Appengine-Inbound-Appid hinzu, um ihre Identität zu bestätigen.

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 zu URL Fetch, z. B. zu den Headern, die in einer URL Fetch-Anfrage gesendet werden.