【发布时间】:2013-10-08 02:48:43
【问题描述】:
有没有办法在 Windows 或 Mac 客户端应用程序中以编程方式访问流行浏览器 (Chrome/FF/IE) 的 cookie 存储?
或者
关于浏览器如何/在何处将 cookie 存储在磁盘上的任何信息/文档?
【问题讨论】:
标签: windows macos internet-explorer google-chrome firefox
有没有办法在 Windows 或 Mac 客户端应用程序中以编程方式访问流行浏览器 (Chrome/FF/IE) 的 cookie 存储?
或者
关于浏览器如何/在何处将 cookie 存储在磁盘上的任何信息/文档?
【问题讨论】:
标签: windows macos internet-explorer google-chrome firefox
每个浏览器都以不同的方式存储其 cookie。
Internet Explorer 使用 WinINET 存储其 cookie;有一个完整的 API 用于访问 cookie,但由于引入了保护模式,它在 Vista+ 上的 IE8 中变得更加复杂,尽管引入了 API 以允许桌面应用程序与保护模式 cookie 交互。
IE10+ 引入了 Enhanced 保护模式,这使得事情变得更加更加复杂,因为 EPM 中没有与 cookie 交互的 API。
http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx
Q11:应用程序或原生代码插件如何检索 cookie?
A:使用 InternetGetCookieEx 函数。
注意,默认情况下,此函数返回的 cookie 不会 包括任何 HTTPOnly cookie。要检索 HTTPOnly cookie,您必须 传递 IE8+ 中可用的 INTERNET_COOKIE_HTTPONLY 标志。如果你 决定传递这个标志,你必须确保你的代码不会 将返回的值公开给任何脚本可控制的上下文。 (笔记: 似乎对 INTERNET_COOKIE_HTTPONLY 标志的支持是 在累积更新中添加到 IE7 (KB960818))。
注意:在 Windows Vista 及更高版本上,Internet Explorer 运行 Internet 保护模式下的内容,一个带有隔离 cookie 存储的沙盒。在 为了从外部的保护模式沙箱中获取 cookie 以中等完整性运行的应用程序(又称 Internet 之外 Explorer),您必须使用 IEGetProtectedModeCookie 函数。这 API是在IE8中添加的,可惜没有直截了当 IE7的替代品。此 API 有许多限制,特别是, 它不能被以高完整性(管理员)运行的进程调用。
【讨论】: