redirect serveur OAuth sur le succès ou l'erreur, utilisez redirect HTTP ou Javascript?
-
28-09-2019 - |
Question
Tous les fournisseurs OAuth J'ai authentifiées avec vous rediriger vers une page qui dit quelque chose comme « Merci, ... Vous allez être redirigé » et utilisations javascript de vous rediriger vers le redirect_uri fourni. J'aurais pensé qu'il était plus simple et plus rapide pour retourner une redirection HTTP. Pourquoi est-il toujours fait de cette façon?
La solution
302 l'en-tête d'emplacement selon HTTP 1.1 ressemble comme ceci:
Location = "Location" ":" absoluteURI
absoluteURI
selon URI Syntaxe générique ne comprend pas de fragment identificateur. Celle avec le fragment est appelé URI-reference
:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
Le détail est décrit dans @ la question de Levik: URL Fragment et redirections 302 . Je suis maintenant apprendre à la dure, mais l'essentiel est que 302 avec le fragment ne semble pas travailler avec IE8.
L'utilisation de JavaScript est probablement beaucoup plus fiable parce que vous êtes supposé passer les jetons d'accès par fragment.
Modifier :
Je sais maintenant ce qui est arrivé avec IE8. IE ne respecte l'identificateur de fragment en-tête situé, mais il ignore l'une de l'URI de la source. Mon URL de redirection était http://example.com/oauth
, que j'avais une redirection automatique à http s , https://example.com/oauth
.
- OAuth redirige vers
http://example.com/oauth#access_token=foo
. - Mon serveur redirige vers
https://example.com/oauth
.
Entre les étapes 1 et 2, IE8 a jeté l'identificateur de fragment, tandis que d'autres navigateurs redirigé vers https://example.com/oauth#access_token=foo
.
La vraie réponse est 302 est ok, aussi longtemps que vous ne l'utilisez pas plus d'une fois sur l'URL.