Notice: We're retiring Works with Nest. See the home page for more information.
Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Yönlendirmeler Nasıl Ele Alınır?

Bazı programlama dillerinde, yönlendirmeler için özel işlem gerektiren HTTP uygulamaları bulunur.

Bir REST API isteğine yanıt olarak Nest API sunucusu bir yönlendirme döndürür. REST istemcisi yeniden yönlendirmeyi algılar ve istemcinin yeniden yönlendirildiği sayfayı ister. Bazı HTTP uygulamaları Yetkilendirme başlığını yeniden yönlendirilen URI'ye iletmez ve bu da 401 Yetkisiz bir hatayla sonuçlanır.

Örneğin, foo.com'u istediğinizi varsayalım. Foo.com sunucusu bar.com'a bir yönlendirmeyle yanıt verir. Postacı veya Curl, Yetkilendirme başlığını önce foo'ya sonra da çubuğa geçirir. Golang ve Python gibi diğer HTTP uygulamaları Yetkilendirme üstbilgisini otomatik olarak yeniden yönlendirilen URI'ye geçirmez.

Nasıl çalışır

Aşağıdaki sıra diyagramı, bir yönlendirme gerçekleştiğinde ne olacağını gösterir.

Yönlendirme sırası

Karşılaştırma için, burada bir yönlendirme gerçekleşmediğinde ne olur?

Yönlendirme sırası yok

Misal

Genellikle, dilinizin HTTP uygulamasının Yetkilendirme başlığını geçemeyebileceğini öngörmek iyi bir kodlama uygulamasıdır.

Kodunuz, başlıkları geri ekledikten sonra otomatik yönlendirmeyi engellemeli ve yönlendirme çağrısını yapmalıdır.

Örneğin, Go'da şunları yapabilirsiniz:

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

Daha fazla örnek için bakınız:

Yeniden yönlendirilen yeri saklama

Ayrıca, yönlendirilen konumu kullanıcı bazında depolamak en iyi uygulamadır. Diğer bir deyişle, bir kullanıcı oturum açıp bir yönlendirme alındıktan sonra, firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ konumunu depolayın ve sonraki tüm istekleri doğrudan bu URI'ye yapın.

Yeniden yönlendirilen konumun kaydedilmesi zaman kazandırır ve gereksiz sunucu yüklenmesini önler.

Yeniden yönlendirmelerin ücret sınırlamasıyla nasıl ilişkili olduğu hakkında daha fazla bilgi için bkz. Veri Hızı Sınırları .

API'yı test etmek için curl kullanma

Curl> = v7.58 kullanırken, yeniden yönlendirmeleri içeren API'ya yapılan çağrılardan 401 Yetkisiz hata alabilirsiniz. Curl v7.58 itibariyle, özel Yetkilendirme başlıkları API tarafından döndürülen yönlendirme URL'sine iletilmez.

Bunu curl> = v7.58'de hesaba katmak için, komut satırı çağrılarında --location-trusted bayrağını kullanın.