Algumas linguagens de programação têm implementações HTTP que exigem tratamento especial para redirecionamentos.
Em resposta a uma solicitação da API REST, o servidor da API Nest retorna um redirecionamento. O cliente REST detecta o redirecionamento e solicita a página para onde o cliente foi redirecionado. Algumas implementações de HTTP não encaminham o cabeçalho de autorização ao URI redirecionado, e isso resulta em um erro 401.
Por exemplo, suponha que você solicite foo.com. O servidor foo.com responde com um redirecionamento para bar.com. O Postman ou o Curl transmite o cabeçalho de autorização para foo e, em seguida, para a barra. Outras implementações de HTTP, como Golang's e Python's, não transmitem 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 comparação, veja o que acontece quando um redirecionamento não ocorre.

Exemplo
Geralmente, é uma prática recomendada de programação prever que a implementação HTTP da sua linguagem não passe no 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 novamente.
Por exemplo, em Go, você pode fazer o seguinte:
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 }, }
Veja mais exemplos em:
Armazenar o local redirecionado
Também é uma prática recomendada armazenar o local redirecionado por usuário. Em outras palavras, depois que um usuário fizer login e um redirecionamento for recebido, armazene o local firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ e faça todas as solicitações subsequentes diretamente para esse URI.
O armazenamento do local redirecionado economiza tempo e evita o carregamento desnecessário do servidor.
Para saber mais sobre como os redirecionamentos se relacionam com a limitação de taxa, consulte Limites de taxa de dados.
Como usar curl para testar a API
Ao usar curl >= v7.58, podem ocorrer erros 401 não autorizados de chamadas para a API que envolvem redirecionamentos. A partir do curl v7.58, os cabeçalhos de autorização personalizados não são encaminhados para o URL de redirecionamento retornado pela API.
Para considerar isso na curl >= v7.58, use a sinalização --location-trusted
com qualquer
chamada de linha de comando.