Google berkomitmen untuk memajukan ekuitas ras untuk komunitas kulit hitam. Lihat bagaimana.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Cara Menangani Pengalihan

Beberapa bahasa pemrograman memiliki implementasi HTTP yang memerlukan penanganan khusus untuk arahan ulang.

Menanggapi permintaan REST API, server Nest API mengembalikan pengalihan. Klien REST mendeteksi pengalihan dan meminta halaman yang dialihkan ke klien. Beberapa implementasi HTTP tidak meneruskan header Otorisasi ke URI yang dialihkan, dan ini menghasilkan kesalahan 401 Tidak Sah.

Misalnya, Anda meminta foo.com. Server foo.com merespons dengan pengalihan ke bar.com. Tukang pos atau Curl meneruskan header Otorisasi ke foo dan kemudian ke bar. Implementasi HTTP lainnya, seperti Golang dan Python, tidak secara otomatis meneruskan header Otorisasi ke URI yang dialihkan.

Bagaimana itu bekerja

Diagram urutan berikut menunjukkan apa yang terjadi ketika pengalihan terjadi.

Urutan pengalihan

Sebagai perbandingan, inilah yang terjadi ketika pengalihan tidak terjadi.

Tidak ada urutan redirect

Contoh

Secara umum, ini merupakan praktik pengkodean yang baik untuk mengantisipasi bahwa implementasi HTTP bahasa Anda mungkin tidak melewati tajuk Otorisasi.

Kode Anda harus mencegah pengalihan otomatis dan membuat panggilan pengalihan setelah menambahkan header kembali.

Misalnya, di Go, Anda dapat melakukan ini:

customClient := http.Client {
    CheckRedirect: func(redirRequest *http.Request, via []*http.Request)
    error {
        // Go's http.DefaultClient does not forward headers when a redirect 3xx
        // response is received. Thus, the header (which in this case contains the
        // Authorization token) needs to be passed forward to the redirect
        // destinations.
        redirRequest.Header = req.Header

        // Go's http.DefaultClient allows 10 redirects before returning an
        // an error. We have mimicked this default behavior.s
        if len(via) >= 10 {
            return errors.New("stopped after 10 redirects")
        }
        return nil
    },
}

Untuk lebih banyak contoh, lihat:

Simpan lokasi yang dialihkan

Ini juga merupakan praktik terbaik untuk menyimpan lokasi yang diarahkan pada basis per pengguna. Dengan kata lain, setelah pengguna masuk dan pengalihan diterima, simpan firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ lokasi dan buat semua permintaan selanjutnya langsung ke URI ini.

Menyimpan lokasi yang diarahkan ulang menghemat waktu dan mencegah beban server yang tidak perlu.

Untuk mempelajari lebih lanjut tentang bagaimana pengalihan terkait dengan pembatasan tingkat, lihat Batas Kecepatan Data .

Menggunakan ikal untuk menguji API

Saat menggunakan curl> = v7.58, Anda mungkin mendapatkan 401 kesalahan tidak sah dari panggilan ke API yang melibatkan pengalihan. Pada curl v7.58, header Otorisasi khusus tidak diteruskan ke URL pengalihan yang dikembalikan oleh API.

Untuk menjelaskan hal ini pada curl> = v7.58, gunakan flag --location-trusted dengan panggilan perintah apa pun.