Mengirim permintaan HTTPS

ID wilayah

REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.

Pelajari ID region lebih lanjut.

Halaman ini menjelaskan cara menerbitkan permintaan HTTP(S) dari aplikasi App Engine Anda menggunakan layanan URL Fetch untuk runtime generasi kedua.

Sebelum mengikuti petunjuk di halaman ini, sebaiknya gunakan solusi idiom bahasa untuk menerbitkan permintaan HTTP(S) sebelum menggunakan layanan URL Fetch. Kasus penggunaan utama untuk menggunakan URL Fetch adalah saat Anda ingin menerbitkan permintaan HTTP(S) ke aplikasi App Engine lain dan menegaskan identitas aplikasi Anda pada permintaan tersebut.

Untuk mengetahui detail tentang batas ukuran permintaan dan header mana yang dikirim pada permintaan URL Fetch request, lihat Permintaan keluar.

Mengirimkan permintaan HTTP

Untuk menggunakan layanan URL-fetch guna mengirimkan permintaan HTTP(S) keluar, panggil paket urlfetch.

Untuk mengeluarkan permintaan HTTP keluar, gunakan paket http seperti biasa, tetapi buat klien menggunakan urlfetch.Client. urlfetch.Client menampilkan *http.Client yang menggunakan urlfetch.Transport, yang merupakan implementasi antarmuka http.RoundTripper yang membuat permintaan menggunakan URL Fetch API.

Cuplikan berikut menunjukkan cara melakukan permintaan GET HTTP dasar:

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

Menonaktifkan pengalihan

Jika Anda menggunakan URL Fetch, layanan URL-Fetch dasar akan mengikuti hingga lima pengalihan secara default. Pengalihan ini dapat meneruskan informasi sensitif, seperti header otorisasi, ke tujuan yang dialihkan. Jika aplikasi Anda tidak memerlukan pengalihan HTTP, sebaiknya nonaktifkan pengalihan.

Untuk menginstruksikan layanan URL-fetch agar tidak mengikuti pengalihan, tetapkan CheckRedirect kolom http.Client yang ditampilkan dari urlfetch paket untuk menampilkan http.ErrUseLastResponse. Hal ini berlaku untuk appengine/urlfetch dan appengine/v2/urlfetch. Contoh:

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

Mengirimkan permintaan HTTPS

Secara default, layanan URL-Fetch yang mendasarinya memvalidasi sertifikat host yang dihubungi, dan menolak permintaan jika sertifikat tidak cocok. Anda tidak perlu mengamankan permintaan secara eksplisit.

Menonaktifkan validasi sertifikat host

Untuk menonaktifkan validasi sertifikat host otomatis, Anda dapat membuat Transport secara manual dan menetapkan AllowInvalidServerCertificate ke true.

Mengirimkan permintaan ke aplikasi App Engine lain

Saat menggunakan URL Fetch untuk mengirimkan permintaan ke aplikasi App Engine lain, aplikasi Anda dapat menegaskan identitasnya dengan menambahkan header X-Appengine-Inbound-Appid ke permintaan tersebut.

Jika Anda menginstruksikan layanan URL-Fetch untuk tidak mengikuti pengalihan, App Engine akan otomatis menambahkan header ini ke permintaan. Lihat Menonaktifkan pengalihan untuk mendapatkan panduan tentang cara menonaktifkan pengalihan.

Langkah berikutnya

Pelajari layanan URL-Fetch, seperti header yang dikirim dalam permintaan URL Fetch di Permintaan Keluar.