我正在创建名为“webengine”的简单 QT 应用程序
pWebView = new QWebEngineView(this);
pWebView->load(QUrl("http://technoz.ru"));
pWebView->show();
// On application close
delete pWebView;
该应用程序创建一个名为“webengine”的标准文件夹用于存储和cookie。域设置 24 小时的 cookie。但关闭并再次打开应用程序后,cookie 丢失了。在文件夹“webengine”中创建的 Сookies 文件 - 空(我在 sqlbrowser 中检查它)。但是,如果您停留在页面 30 - 40 秒,cookie 就会被保存。
为什么cookies不立即保存,如何立即保存?
在测试过程中发现,QT(chromium)会在30秒(恒定)内通过浏览器自动存储cookie,如果经过的时间较短,则不会保存cookie。这次可以改吗?我尝试使用标志 - --profiling-flush=5,但它没有帮助。
假设关闭浏览器时浏览器必须保留存储(cookies),但它没有,这是否是QT的一个bug?
我认为我可以从源代码构建 QT,并在源代码中查找并更改此设置,但是,也许这个问题有其他解决方案......
谢谢大家,发现bug了:https://bugreports.qt.io/browse/QTBUG-52121 https://bugreports.qt.io/browse/QTBUG-52121
您必须编辑 QWebEngineProfile 的 cookie 存储策略。如果您使用默认配置文件,请使用:
QWebEngineProfile::defaultProfile()->setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies)
会话 cookie 和持久 cookie 都保存到磁盘并从磁盘恢复。您可以选择保存 cookie 和缓存数据的文件夹:
QWebEngineProfile* defaultProfile = QWebEngineProfile::defaultProfile();
defaultProfile->setCachePath("your folder");
defaultProfile->setPersistentStoragePath("your folder");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)