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