Algumas linguagens de programação têm implementações HTTP que requerem tratamento especial para redirecionamentos.
Em resposta a uma solicitação REST API, o servidor Nest API retorna um redirecionamento. O cliente REST detecta o redirecionamento e solicita a página para a qual o cliente foi redirecionado. Algumas implementações de HTTP não encaminham o cabeçalho Authorization para o URI redirecionado e isso resulta em um erro 401 Unauthorized.
Por exemplo, suponha que você solicite foo.com. O servidor foo.com responde com um redirecionamento para bar.com. Postman ou Curl passam o cabeçalho Authorization para foo e então para bar. Outras implementações HTTP, como Golang's e Python's, não passam automaticamente o cabeçalho Authorization para o URI redirecionado.
Como funciona
O diagrama de sequência a seguir mostra o que acontece quando ocorre um redirecionamento.

Para efeito de comparação, aqui está o que acontece quando um redirecionamento não ocorre.

Exemplo
Geralmente, é uma boa prática de codificação antecipar que a implementação de HTTP da sua linguagem pode não passar o cabeçalho de autorização.
Seu código deve impedir o redirecionamento automático e fazer a chamada de redirecionamento após adicionar os cabeçalhos de volta.
Por exemplo, em Go, você pode fazer isso:
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 }, }
Para mais exemplos, veja:
Armazene o local redirecionado
Também é uma prática recomendada armazenar o local redirecionado por usuário. Em outras palavras, depois que um usuário faz login e um redirecionamento é recebido, armazene o local firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ e faça todas as solicitações subsequentes diretamente para este URI.
Armazenar o local redirecionado economiza tempo e evita o carregamento desnecessário do servidor.
Para saber mais sobre como os redirecionamentos estão relacionados à limitação de taxa, consulte Limites de taxa de dados .
Usando curl para testar a API
Ao usar curl> = v7.58, você pode obter 401 erros não autorizados de chamadas para a API que envolvem redirecionamentos. A partir do curl v7.58, os cabeçalhos de autorização customizados não são encaminhados para a URL de redirecionamento retornada pela API.
Para contabilizar isso em curl> = v7.58, use o --location-trusted
com qualquer chamada de linha de comando.