Bazı programlama dilleri, yönlendirmeler için özel işlem gerektiren HTTP uygulamalarına sahiptir.
Nest API sunucusu, REST API isteğine yanıt olarak bir yönlendirme döndürür. REST istemcisi yönlendirmeyi algılar ve istemcinin yönlendirildiği sayfayı ister. Bazı HTTP uygulamaları, Yetkilendirme başlığını yeniden yönlendirilen URI'ye iletmez ve bu, 401 Yetkisiz hatasıyla sonuçlanır.
Örneğin, foo.com'u istediğinizi varsayalım. foo.com sunucusu, bar.com'a bir yönlendirme ile yanıt verir. Postacı veya Curl, Yetkilendirme başlığını foo'ya ve ardından bar'a iletir. Golang'lar ve Python'lar gibi diğer HTTP uygulamaları, Yetkilendirme başlığını yeniden yönlendirilen URI'ye otomatik olarak iletmez.
Nasıl çalışır
Aşağıdaki sıra şeması, bir yönlendirme gerçekleştiğinde ne olduğunu gösterir.
Karşılaştırma için, yönlendirme gerçekleşmediğinde ne olduğu aşağıda açıklanmıştır.
Misal
Genel olarak, dilinizin HTTP uygulamasının Yetkilendirme başlığını geçmeyebileceğini tahmin etmek iyi bir kodlama uygulamasıdır.
Kodunuz, otomatik yönlendirmeyi engellemeli ve başlıkları geri ekledikten sonra yönlendirme çağrısını yapmalıdır.
Örneğin, Go'da şunu 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 bkz.
Yönlendirilen konumu saklayın
Ayrıca, yeniden yönlendirilen konumu kullanıcı bazında depolamak en iyi uygulamadır. Başka bir deyişle, bir kullanıcı oturum açtıktan ve bir yönlendirme alındıktan sonra, firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ konumunu saklayın ve sonraki tüm istekleri doğrudan bu URI'ye yapın.
Yeniden yönlendirilen konumun saklanması zaman kazandırır ve gereksiz sunucu yükünü önler.
Daha yönlendirmeleri oran sınırlayıcı olan ilişki hakkında bilgi edinmek için bkz Veri Hızı Sınırları .
API'yi test etmek için curl kullanma
curl >= v7.58 kullanırken, API'ye yönlendirmeler içeren çağrılardan 401 Yetkisiz hata alabilirsiniz. curl v7.58'den itibaren, özel Yetkilendirme üstbilgileri, API tarafından döndürülen yönlendirme URL'sine iletilmez.
Kıvrılma> = v7.58, bu hesaba için kullanmak
--location-trusted herhangi bir komut satırı aramaları ile bayrağı.