【发布时间】:2016-02-23 09:57:34
【问题描述】:
与question 非常相似,我试图在响应标头中获取特定值。它使用Asynchronous Pluggable Protocol (APP) 处理程序引用pass-through solution,但是由于解决方案已经过时,因此链接已失效。
也许我的处理方法不正确。
概述: 我正在扩展我用 C++(桌面应用程序)编写的 OAuth2 库,它适用于 Google API,现在允许与 Microsoft 协商。正如this site(在'成功登录后重定向请求'下)中所引用的那样,验证码在响应标头的Location 字段中返回。使用 HTTP 调试器,我可以看到发送的值(见下文)。
当尝试从IHTMLDocument2 获取IHTMLLocation 接口时,没有一个属性包含我可以使用 HTTP 调试器看到的值,并且即使“位置”字段不存在,这些调用也会以各种值成功响应头(这显然不是所需要的)。
这是唯一的挂断。所有后续调用和请求,我使用 WinHTTP API,响应标头为 easily accessed。然而,这个阶段仍然是用户可以在浏览器中正确验证和授权应用程序的阶段。感谢您的宝贵时间和帮助。
更新: 响应类似于以下内容:
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Location: urn:ietf:wg:oauth:2.0:oob?code=[VALUE]
【问题讨论】:
-
如果有
Location:标头,则应该有301或302重定向响应代码,这些代码通常会自动跟随。新的响应标头不会有Location标头。会不会是这个? -
是的,我会更新问题。
-
IHTMLDocument2不公开对 HTTP 标头的访问。IHTMLLocation表示当前文档中实际加载的最终 URL,因此它永远不会表示由指向该最终 URL 的 HTTP 重定向提供的任何中间 URL。对于您尝试执行的操作,您可能必须发出自己的 HTTP 请求,例如使用 WinInet/WinHTTP 或任何其他 HTTP 库,然后手动将生成的 HTML 加载到 WebBrowser 实例中(如果需要将其显示到用户。
标签: oauth-2.0 http-headers iwebbrowser2