Einige Programmiersprachen haben HTTP-Implementierungen, die eine besondere Handhabung für Weiterleitungen erfordern.
Als Antwort auf eine REST API-Anfrage gibt der Nest API-Server eine Weiterleitung zurück. Der REST-Client erkennt die Weiterleitung und fordert die Seite an, zu der der Client weitergeleitet wurde. Einige HTTP-Implementierungen leiten den Autorisierungsheader nicht an den weitergeleiteten URI weiter, was zu einem Fehler 401 (nicht autorisiert) führt.
Beispiel: Sie fragen nach foo.com. Der foo.com-Server antwortet mit einer Weiterleitung zu bar.com. Postman oder Curl gibt den Autorisierungsheader an foo und dann an bar weiter. Andere HTTP-Implementierungen wie Golangs und Pythons übertragen den Autorisierungsheader nicht automatisch an den weitergeleiteten URI.
Funktionsweise
Das folgende Sequenzdiagramm zeigt, was passiert, wenn eine Weiterleitung erfolgt.

Außerdem siehst du hier, was passiert, wenn eine Weiterleitung nicht erfolgt.

Beispiel
Generell wird davon ausgegangen, dass die HTTP-Implementierung der Sprache unter Umständen nicht den Autorisierungsheader übergibt.
Dein Code sollte die automatische Weiterleitung verhindern und den Weiterleitungsaufruf ausführen, nachdem du die Header wieder hinzugefügt hast.
Beispielsweise können Sie in Go Folgendes tun:
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 }, }
Weitere Beispiele:
Umgeleiteten Standort speichern
Außerdem empfiehlt es sich, den umgeleiteten Standort auf Nutzerbasis zu speichern. Anders ausgedrückt: Wenn ein Nutzer sich anmeldet und eine Weiterleitung empfangen wurde, speichern Sie den Firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/-Standort und senden alle nachfolgenden Anfragen direkt an diesen URI.
Durch das Speichern des weitergeleiteten Speicherorts wird Zeit gespart und unnötige Serverlast wird vermieden.
Weitere Informationen zum Zusammenhang von Weiterleitungen mit der Ratenbegrenzung finden Sie unter Datenbegrenzungen.
API mit curl testen
Wenn Sie „curl >= v7.58“ verwenden, erhalten Sie möglicherweise Aufrufe der Kategorie „401 – Unauthorized“ von Aufrufen an die API, die Weiterleitungen umfassen. Ab cv 7.58 werden kundenspezifische Autorisierungsheader nicht mehr an die von der API zurückgegebene Weiterleitungs-URL weitergeleitet.
Verwenden Sie dazu unter curl >= v7.58 das Flag --location-trusted
bei allen Befehlszeilenaufrufen.