OAUTH Server перенаправляется на успехе или ошибке, используйте HTTP Redirect или JavaScript?
-
28-09-2019 - |
Вопрос
Все поставщики 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
.
- ОАУТ перенаправляет к
http://example.com/oauth#access_token=foo
. - Мой сервер перенаправляет
https://example.com/oauth
.
Между шагом 1 и 2, IE8 выбросил идентификатор фрагмента, а некоторые другие браузеры перенаправлены на https://example.com/oauth#access_token=foo
.
Таким образом, реальный ответ 302 - в порядке, пока вы не используете его более одного раза на URL.