Перенаправление сервера Oauth в случае успеха или ошибки, используйте перенаправление HTTP или Javascript? - PullRequest
1 голос
/ 06 октября 2010

Все провайдеры Oauth, с которыми я проходил аутентификацию, перенаправят вас на страницу, которая говорит что-то вроде «Спасибо, перенаправляет вас ...» и использует javascript, чтобы перенаправить вас на предоставленный redirect_uri. Я бы подумал, что проще и быстрее вернуть HTTP-редирект. Почему так всегда делается?

1 Ответ

0 голосов
/ 08 апреля 2011
Заголовок местоположения

302 в соответствии с HTTP 1.1 выглядит следующим образом:

Location       = "Location" ":" absoluteURI

absoluteURI в соответствии с Общий синтаксис URI не включает идентификатор фрагмента. Тот с фрагментом называется URI-reference:

URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]   

Подробности описаны в вопросе @ levik: Фрагмент URL и 302 перенаправления . Сейчас я изучаю его трудным путем, но суть в том, что 302 с фрагментом, похоже, не работает с IE8.

Использование Javascript, вероятно, является более надежным способом, поскольку предполагается, что токены доступа передаются через фрагмент.

Редактировать : Теперь я знаю, что случилось с IE8. IE уважает идентификатор фрагмента в заголовке Location, но игнорирует идентификатор из исходного URI. URL моего перенаправления был на http://example.com/oauth, который я автоматически перенаправил на http s , https://example.com/oauth.

  1. OAuth перенаправляет на http://example.com/oauth#access_token=foo.
  2. Мой сервер перенаправляет на https://example.com/oauth.

Между шагами 1 и 2 IE8 выбрасывал идентификатор фрагмента, а некоторые другие браузеры перенаправляли на https://example.com/oauth#access_token=foo.

Таким образом, реальный ответ - 302 в порядке, если вы не используете его более одного раза в URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...