發出 HTTPS 要求

區域 ID

REGION_ID 是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。即使部分區域 ID 看似常用的國家/地區和省份代碼,但該代碼並不對應至國家/地區或省份。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是這段時間前建立的現有應用程式,網址可選擇是否包含區域 ID。

進一步瞭解區域 ID。

本頁面說明如何透過第二代執行階段的網址擷取服務,從 App Engine 應用程式發出 HTTP(S) 要求。

建議您先使用語言慣用解決方案發出 HTTP(S) 要求,再使用網址擷取服務。使用網址擷取服務的主要用途是向其他 App Engine 應用程式發出 HTTP(S) 要求,並在該要求中聲明應用程式的身分。

如要進一步瞭解要求大小上限和透過網址擷取要求傳送的標頭,請參閱傳出要求一文。

發出 HTTP 要求

如要使用網址擷取服務發出傳出 HTTP(S) 要求,請 呼叫 urlfetch 套件。

如要發出 HTTP 要求,請照常使用 http 套件,但建立用戶端時請改用 urlfetch.Client。urlfetch.Client 會傳回使用 urlfetch.Transport 的 *http.Client,這是 http.RoundTripper 介面的實作項目,會使用 URL Fetch API 發出要求。

下列程式碼片段示範如何執行基本的 HTTP GET 要求:

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

停用重新導向

如果您使用網址擷取服務,預設情況下,基礎網址擷取服務最多會追蹤五次重新導向。這些重新導向可能會將授權標頭等私密資訊轉送至重新導向目的地。如果應用程式不需要 HTTP 重新導向,建議您停用重新導向。

如要禁止網址擷取服務追蹤重新導向連結,請將從 urlfetch 套件傳回的 http.Client CheckRedirect 欄位設為傳回 http.ErrUseLastResponse。這適用於 appengine/urlfetch 和 appengine/v2/urlfetch。例如:

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

發出 HTTPS 要求

根據預設,基礎網址擷取服務會驗證所連線主機的憑證,如果憑證不符,就會拒絕要求。您不需要明確保護要求。

停用主機憑證驗證

如要停用自動驗證主機憑證的功能,可以手動建立一次傳輸,並將 AllowInvalidServerCertificate 設定成 true。

向其他 App Engine 應用程式發出要求

使用網址擷取服務向其他 App Engine 應用程式發出要求時,您的應用程式可以在要求中加入 X-Appengine-Inbound-Appid 標頭,以表明自己的身分。

如果您指示網址擷取服務不要追蹤重新導向,App Engine 會自動在要求中加入這個標頭。如需停用重新導向的相關指引,請參閱「停用重新導向」。

後續步驟

如要瞭解網址擷取服務,例如透過網址擷取要求傳送的標頭,請參閱傳出要求一文。