【发布时间】:2011-03-23 14:04:23
【问题描述】:
我有一个主窗口,其中有一个 QWebView。 我想让某个网站(例如 www.kdkdkkd.com)cookie 永久化,这样每次用户关闭并重新打开浏览器时,他都不需要再次登录。
谢谢,
【问题讨论】:
标签: c++ qt cookies webkit qwebview
我有一个主窗口,其中有一个 QWebView。 我想让某个网站(例如 www.kdkdkkd.com)cookie 永久化,这样每次用户关闭并重新打开浏览器时,他都不需要再次登录。
谢谢,
【问题讨论】:
标签: c++ qt cookies webkit qwebview
您需要设置自己的“Cookie Jar”。
QNetworkAccessManager::setCookieJar。 QNetworkCookieJar - 因为默认情况下浏览器关闭时它不会保留cookie:一旦
QNetworkCookieJar对象是 删除,它持有的所有 cookie 将 也被丢弃。如果你想保存 cookie,你应该从 这个类并实现保存到 磁盘到您自己的存储格式。 (来自QNetworkCookieJardocumentation。)
您可以通过推送到每个QNetworkCookieJar::setCookiesFromUrl 上的永久存储来执行此操作(最安全但最慢),或者仅在浏览器窗口关闭时(总体速度更快但安全性较低,就像您异常退出时不会保存 cookie jar) .
注意some cookies 不应该被持久化,您可以使用QNetworkCookie::isSessionCookie 来确定这一点。
【讨论】:
有一个官方的 Qt Demo,叫做“Browser”。它实现了一个 CookieJar 类,该类支持使用 QSettings 堆栈将 cookie 保存和加载到 .ini 文件。
【讨论】:
一旦 cookie(s) 在 NAM (NetworkAccessManager) 中注册,设置 webview 以使用它:
myWebView->page()->setNetworkAccessManager(myNAM);
【讨论】: