2011-03-23 44 views
16

我有一个主窗口,在它里面,我有一个QWebView。 我想让一个特定的网站(例如www.kdkdkkd.com)为cookies,因此每次用户关闭并重新打开浏览器时,他都不需要再次登录。Qt WebKit和永久饼干

谢谢,

回答

26

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

  1. 使用QNetworkAccessManager::setCookieJar
  2. 扩展QNetworkCookieJar - 因为它关闭浏览器时默认不坚持饼干:

一旦QNetworkCookieJar对象 删除,它持有的所有cookies将被丢弃 也。如果您想要保存 的Cookie,您应该从 这个类派生出来并实现将保存到 的磁盘转换为您自己的存储格式。 (从QNetworkCookieJar documentation

您可以通过推到永久存储在每个QNetworkCookieJar::setCookiesFromUrl(最安全的,但最慢),或者仅在关闭浏览器窗口(整体速度较快,但不太安全的,因为如果你退出异常饼干做到这一点罐子不会被保存)。

请注意,some cookies不应该被持续,您可以使用QNetworkCookie::isSessionCookie来确定这一点。

+0

我相信你的意思是:QNetworkCookieJar :: setCookiesFromUrl我会检查这一点。 – snoofkin 2011-03-23 16:27:51

+0

的确,修正后的 – 2011-03-25 00:14:20

+0

可以请您解释一下代码,我无法存储cookies – tharunkumar 2016-05-11 10:44:39

1

一旦在NAM(NetworkAccessManager)登记保存cookie,设置web视图使用它:

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

+0

请考虑改进格式并且有点描述性。 – nikhil 2012-10-11 17:59:57

4

有一个正式的Qt演示,被称为 “Browser”。它实现了一个CookieJar类,它支持使用QSettings堆栈将Cookie保存并加载到.ini文件。

+1

链接将有所帮助。 – freakTheMighty 2013-06-21 19:45:49