Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Cara Menangani Pengalihan

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

Sebagai tanggapan atas permintaan REST API, server Nest API mengembalikan pengalihan. Klien REST mendeteksi pengalihan dan meminta halaman tempat klien diarahkan. Beberapa implementasi HTTP tidak meneruskan header Otorisasi ke URI yang dialihkan, dan ini menghasilkan kesalahan 401 Tidak Diotorisasi.

Misalnya, Anda meminta foo.com. Server foo.com merespons dengan pengalihan ke bar.com. Tukang pos atau Curl meneruskan header Otorisasi ke foo lalu 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 pengalihan

Contoh

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

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

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 dialihkan berdasarkan per pengguna. Dengan kata lain, setelah pengguna masuk dan pengalihan diterima, simpan lokasi firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ dan buat semua permintaan berikutnya langsung ke URI ini.

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

Untuk mempelajari lebih lanjut tentang bagaimana pengalihan berhubungan dengan tingkat membatasi, lihat Batas Data Rate .

Menggunakan curl 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 account untuk ini pada ikal> = v7.58, gunakan --location-trusted bendera dengan panggilan baris perintah.