Oauth Server Redirecion sobre sucesso ou erro, use redirecionamento ou javascript HTTP?
-
28-09-2019 - |
Pergunta
Todos os provedores de OAuth com quem eu autentiquei redirecionarão você para uma página que diz algo como "Obrigado, redirecionando você ..." e usa JavaScript para redirecioná -lo para o Redirect_uri fornecido. Eu teria pensado que era mais simples e rápido retornar um redirecionamento HTTP. Por que sempre é feito dessa maneira?
Solução
Cabeçalho de localização de 302 de acordo com HTTP 1.1 se parece com isso:
Location = "Location" ":" absoluteURI
absoluteURI
de acordo com Sintaxe genérica URI não inclui identificador de fragmento. Aquele com o fragmento é chamado URI-reference
:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
O detalhe é descrito na pergunta de @Levik: Fragmento de URL e 302 redirecionamentos. Agora estou aprendendo da maneira mais difícil, mas a essência é que 302 com fragmento não parece funcionar com o IE8.
O uso do JavaScript provavelmente é uma maneira mais confiável, porque você deve passar os tokens de acesso por fragmento.
Editar: Agora sei o que aconteceu com o IE8. O IE respeita o identificador de fragmento no cabeçalho da localização, mas ignora o do URI de origem. Meu URL de redirecionamento era para http://example.com/oauth
, que eu tive um redirecionamento automático para https, https://example.com/oauth
.
- Oauth redireciona para
http://example.com/oauth#access_token=foo
. - Meu servidor redireciona para
https://example.com/oauth
.
Entre a etapa 1 e 2, o IE8 jogou fora o identificador de fragmento, enquanto alguns dos outros navegadores foram redirecionados para https://example.com/oauth#access_token=foo
.
Portanto, a resposta real é 302 está ok, desde que você não a use mais de uma vez no URL.