重定向URI中缺少URL片段

时间:2013-07-23 12:54:54

标签: qt url redirect browser oauth-2.0

我正在测试基于Qt的OAuth库(https://github.com/pipacs/o2)。我正在针对 Facebook 测试OAuth 2.0作为提供商。

我正在测试协议的 ImplicitGrant 流程。在此流程中,如果客户端将* request_type *查询参数设置为 token ,则响应将作为URL片段包含在内,并包含访问令牌。

Facebook,在浏览器中成功进行身份验证后,会回复重定向到我提供的uri,访问令牌会在 网址片段 中发送。

例如:浏览器被重定向到:

  

http://mylocalserver.com:8888/#access_token=ABCDE&expires_in=5162322

mylocalserver.com =本地主机

我在Qt中实现了一个小型HTTP服务器,可以处理所有这些重定向。

问题在于,在获取传入连接时,即从重定向启动它的浏览器,当我从套接字读取数据时,我看到片段部分缺少!例如:对于上面的本地网址,我看到的数据是:

GET / HTTP/1.1
Host: 127.0.0.1:8888
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

正如您所见,片段完全缺失。为了解决这个问题,我发现FF / Chrome可能会将碎片放在位置标题中。但我也没有看到。

知道片段为什么会丢失以及如何将其取回/指示浏览器发送它?

1 个答案:

答案 0 :(得分:0)

implict 流程适用于没有“服务器”的情况。片段(及其中的访问令牌)将由客户端代码(例如,javascript,本机客户端等)提取。这适用于无法安全保存机密的情况。如果可以(如在服务器中),通常使用授权代码流。预期GET中缺少的片段到服务器。