16

我有一个主窗口,其中有一个 QWebView。我想让某个网站(例如 www.kdkdkkd.com)cookie 永久化,因此每次用户关闭并重新打开浏览器时,他都不需要再次登录。

谢谢,

4

3 回答 3

26

您需要设置自己的“Cookie Jar”。

  1. 使用QNetworkAccessManager::setCookieJar.
  2. 扩展QNetworkCookieJar- 因为默认情况下浏览器关闭时它不会保留 cookie:

一旦QNetworkCookieJar对象被删除,它持有的所有 cookie 也将被丢弃。如果你想保存 cookie,你应该从这个类派生并实现保存到磁盘到你自己的存储格式。(来自QNetworkCookieJar文档。)

您可以通过在每个上推送到永久存储QNetworkCookieJar::setCookiesFromUrl(最安全但最慢)或仅在浏览器窗口关闭时(整体速度更快但安全性较低,好像您异常退出 cookie jar 不会被保存)来做到这一点。

请注意,某些 cookie不应该被持久化,您可以使用它QNetworkCookie::isSessionCookie来确定这一点。

于 2011-03-23T15:08:52.150 回答
4

有一个官方的 Qt Demo,叫做“ Browser ”。它实现了一个 CookieJar 类,该类支持使用 QSettings 堆栈将 cookie 保存和加载到 .ini 文件。

于 2013-03-13T10:44:59.957 回答
1

在 NAM (NetworkAccessManager) 中注册 cookie 后,将 webview 设置为使用它:

myWebView->page()->setNetworkAccessManager(myNAM);

于 2012-07-19T13:26:59.980 回答