C++:Cookie 不存储在一台机器上,而是存储在另一台机器上
Posted
技术标签:
【中文标题】C++:Cookie 不存储在一台机器上,而是存储在另一台机器上【英文标题】:C++ : Cookie not stored in one machine, but stored in another 【发布时间】: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 是你正在使用的库 【参考方案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 应该存在于磁盘上。以上是关于C++:Cookie 不存储在一台机器上,而是存储在另一台机器上的主要内容,如果未能解决你的问题,请参考以下文章