Фрагмент URL отсутствует в URI перенаправления
Я тестирую основанную на Qt библиотеку OAuth ( https://github.com/pipacs/o2). Я тестирую OAuth 2.0 против Facebook как провайдера.
Я тестирую поток ImplicitGrant протокола. В этом потоке, если клиент устанавливает параметр запроса *request_type* в токен, тогда ответ включается в виде фрагмента URL и содержит токен доступа.
Facebook, после успешной аутентификации в браузере, отвечает перенаправлением на URI, который я предоставляю, и маркер доступа отправляется во фрагменте URL.
Например: браузер перенаправлен на:
mylocalserver.com= локальный
У меня есть крошечный HTTP-сервер, реализованный в Qt, который обрабатывает все такие перенаправления.
Проблема в том, что при получении входящего соединения, то есть от браузера, который инициировал его при перенаправлении, когда я читаю данные из сокета, я вижу, что часть фрагмента отсутствует! Например: для указанного выше локального URL-адреса, данные, которые я вижу:
GET / HTTP / 1.1 Host: 127.0.0.1:8888 Пользователь-агент: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:22.0) Gecko/20100101 Firefox/22.0 Принять: текст / html, приложение /xhtml+xml, приложение /xml;q=0,9,*/*;q=0,8 Accept-Language: en-US,en;q=0,5 Accept-Encoding: gzip, deflate Подключение: keep-alive
Как видите, фрагмент полностью отсутствует. Осматривая эту проблему, я обнаружил, что FF/Chrome может помещать фрагменты в заголовок Location. Но я тоже этого не вижу.
Любая идея о том, почему фрагмент теряется и как вернуть его / поручить браузеру отправить его?
1 ответ
Поток последствий предназначен для использования в ситуациях, когда нет "сервера". Фрагменты (и токен доступа в нем) будут извлечены с помощью кода на стороне клиента (например, JavaScript, нативные клиенты и т. Д.). Это для ситуаций, когда вы не можете хранить секреты в безопасности. Когда вы можете (как на сервере), вы обычно используете поток кода авторизации. Ожидается фрагмент, отсутствующий в GET для сервера.