Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 重定向URI中缺少URL片段_Qt_Url_Redirect_Browser_Oauth 2.0 - Fatal编程技术网

Qt 重定向URI中缺少URL片段

Qt 重定向URI中缺少URL片段,qt,url,redirect,browser,oauth-2.0,Qt,Url,Redirect,Browser,Oauth 2.0,我正在测试一个基于Qt的OAuth库()。我正在测试OAuth 2.0,测试对象是Facebook 我正在测试协议的隐式授权流。在此流中,如果客户机将*request_type*query参数设置为token,则响应将作为URL片段包含并包含访问令牌 在浏览器中成功进行身份验证后,Facebook会以重定向到我提供的uri的方式进行响应,访问令牌将在URL片段中发送 例如:浏览器被重定向到: mylocalserver.com=localhost 我在Qt中实现了一个小型HTTP服务器,它处理

我正在测试一个基于Qt的OAuth库()。我正在测试OAuth 2.0,测试对象是Facebook

我正在测试协议的隐式授权流。在此流中,如果客户机将*request_type*query参数设置为token,则响应将作为URL片段包含并包含访问令牌

在浏览器中成功进行身份验证后,Facebook会以重定向到我提供的uri的方式进行响应,访问令牌将在URL片段中发送

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

mylocalserver.com=localhost

我在Qt中实现了一个小型HTTP服务器,它处理所有此类重定向

问题是,当我从套接字读取数据时,在获取传入连接时,即从重定向时启动连接的浏览器中,我看到片段部分丢失了!对于上面的本地url,我看到的数据是:

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 GET/HTTP/1.1 主持人:127.0.0.1:8888 用户代理:Mozilla/5.0(X11;Ubuntu;Linux i686;rv:22.0)Gecko/20100101 Firefox/22.0 接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8 接受语言:en-US,en;q=0.5 接受编码:gzip,deflate 连接:保持活力 如您所见,该片段完全缺失。环顾四周寻找这个问题,我发现FF/Chrome可能会将片段放在位置标题中。但我也看不到这一点


是否知道片段丢失的原因以及如何取回/指示浏览器发送?

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

您是对的,正如OAuth 2草案规范中提到的那样,片段部分由“用户代理”保留:但是,仍然需要web服务器,因为用户代理应该对来自授权服务器的重定向进行操作。尽管如此,我不知道“用户代理”应该如何保留URI片段。他们是否期待一些定制的“浏览器”?目前,我只是打开用户为打开Facebook登录对话框(用于OAuth)而配置的默认浏览器。谢谢。没有web服务器通常用于隐式流。重定向被截获,您使用客户端javascript提取令牌。谢谢Eugenio。我将尝试使用自定义用户代理拦截重定向。