QT 5.6 QWebEngine 不保存 cookie

QT 5.6 QWebEngine doesn't save cookies

本文关键字:保存 cookie QWebEngine QT      更新时间:2023-10-16

我正在创建名为";网络引擎";

pWebView = new QWebEngineView(this);
pWebView->load(QUrl("http://technoz.ru"));
pWebView->show();
// On application close
delete pWebView;

该应用程序创建一个名为"的标准文件夹;网络引擎";用于存储和cookie。域设置24小时的cookie。但在关闭并再次打开应用程序后,cookie丢失了。在文件夹"中创建的Сookies文件;网络引擎"-空(我在sqlbrowser中检查它)。但是,如果你在页面上停留30-40秒,cookie就会保存下来。

为什么cookie没有立即保存,以及如何立即保存?


在测试过程中,QT(铬)会在30秒内自动通过浏览器存储cookie(恒定)。如果经过的时间更短,则不会保存cookie。这次有可能改变吗?我试着使用标志--profiling flush=5,但它没有帮助。

考虑到当您关闭浏览器时,浏览器必须保留存储(cookie),但它没有,这是否是QT错误?


我可以从源代码构建QT,并在源代码中找到和更改此设置,我认为,但是,也许这个问题有其他解决方案。。。


感谢所有人,发现了它的错误: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");