Фрагмент URL отсутствует в URI перенаправления

Я тестирую основанную на Qt библиотеку OAuth ( https://github.com/pipacs/o2). Я тестирую OAuth 2.0 против Facebook как провайдера.

Я тестирую поток ImplicitGrant протокола. В этом потоке, если клиент устанавливает параметр запроса *request_type* в токен, тогда ответ включается в виде фрагмента URL и содержит токен доступа.

Facebook, после успешной аутентификации в браузере, отвечает перенаправлением на URI, который я предоставляю, и маркер доступа отправляется во фрагменте URL.

Например: браузер перенаправлен на:

http://mylocalserver.com:8888/

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 для сервера.

Другие вопросы по тегам