【问题标题】:C++ : Cookie not stored in one machine, but stored in anotherC++:Cookie 不存储在一台机器上,而是存储在另一台机器上
【发布时间】:2010-11-23 11:08:57
【问题描述】:

我正在使用自己使用 VS 2010 编写的小型 C++ 应用程序。 此应用使用以下功能通过 HTTPS 访问网站:

InternetOpen(), InternetConnect(), HttpOpenRequest(), HttpSendRequest(),
HttpQueryInfo(), InternetReadFile()

过去 2 年,该应用程序在最初运行 Win XP 和当前 Win 7 的 32 位计算机上运行良好。 但它不能在 64 位 Win 7 机器上运行,尽管它仍然设置为构建 32 位可执行代码:应用程序无法登录网站。

使用 HTTP 流量嗅探器检查,我注意到一个请求是在没有网站设置的 cookie 的情况下完成的。

我的问题是,cookie 正常存储在哪里?正如我所说,我没有使用任何库,只使用上述函数。

没有将 cookie 存储在第二台机器中的原因是什么?

感谢您的帮助!

【问题讨论】:

  • WinInet 是你正在使用的库

标签: c++ cookies https 64-bit wininet


【解决方案1】:

请参阅 MSDN 中的 Managing Cookies。它解释了 cookie 存在于 AppData\Roaming\Microsoft\Windows\Cookies\Low

我看不出 cookie 机制在 x64 上失败的任何可能原因。我宁愿希望某些本地 (IE) 配置选项生效,该选项会禁止对该站点使用 cookie(例如,该站点位于不同的区域中,或者 cookie 被视为第 3 方)。

【讨论】:

  • 奇怪的是,运行该应用程序的 32 位机器在 AppData\Roaming\Microsoft\Windows 中没有“Cookies”文件夹...所以我猜 cookie 保存在其他地方。我想知道它是否可以保存在线程的内存中..
  • 解决了!确实是 IE 设置限制了 cookie 的使用。
  • Cookies 很可能确实存储在进程内存中(可能与 HINTERNET 相关联,在堆上)如果它们是会话 cookie(即应该在浏览器关闭时消失,这可能匹配互联网关闭句柄)。只有持久性 cookie 应该存在于磁盘上。
猜你喜欢
  • 2015-06-29
  • 1970-01-01
  • 2023-03-29
  • 2016-09-28
  • 2015-11-08
  • 2018-01-06
  • 2015-07-23
  • 1970-01-01
  • 2017-08-07
相关资源
最近更新 更多