OAUTH Server перенаправляется на успехе или ошибке, используйте HTTP Redirect или JavaScript?

StackOverflow https://stackoverflow.com/questions/3869197

Вопрос

Все поставщики OAUTH, я аутектифицировал, с удовольствием перенаправляю вас на страницу, которая говорит что-то вроде «Спасибо, перенаправляя вас ...» и использует JavaScript для перенаправления вас на прилагаемое Redirect_uri. Я бы подумал, что это проще и быстрее вернуть HTTP Redirect. Почему это всегда делается таким образом?

Это было полезно?

Решение

Заголовок расположения 302 в соответствии с Http 1.1. Похоже:

Location       = "Location" ":" absoluteURI

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

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

Деталь описана в вопросе @ левик: Фрагмент URL и 302 перенаправления. Отказ Сейчас я уделяю это трудно, но суть - это то, что 302 с фрагментом не работает с IE8.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top