QT 5.6 QWebEngine不保存cookie

时间:2016-05-20 01:09:10

标签: c++ qt cookies qt5

我正在创建名为“webengine”的简易QT应用程序

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

应用程序为存储和cookie创建名为“webengine”的标准文件夹。域设置cookie为24小时。但在关闭并再次打开应用程序后,cookie丢失了。 Сookies文件在“webengine”文件夹中创建 - 为空(我在sqlbrowser中检查它)。但是,如果您按住第30 - 40秒,则会保存Cookie。

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

在测试过程中,结果表明,如果经过的时间较少,QT(铬)会在30秒内(通常)通过浏览器自动存储cookie,不会保存cookie。可以改变这个时间吗?我试图使用标志 - --profiling-flush = 5,但它没有帮助。

鉴于浏览器必须在关闭浏览器时保留存储(cookie),但它没有,是否是QT的错误?

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

谢谢大家,发现它包包: https://bugreports.qt.io/browse/QTBUG-52121

1 个答案:

答案 0 :(得分:2)

您必须编辑QWebEngineProfile的cookie存储策略。如果您使用的是默认配置文件,请使用:

QWebEngineProfile::defaultProfile()->setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies)

会话和持久性cookie都保存到磁盘并从磁盘恢复。您可以选择保存cookie和缓存数据的文件夹:

QWebEngineProfile* defaultProfile = QWebEngineProfile::defaultProfile();
defaultProfile->setCachePath("your folder");
defaultProfile->setPersistentStoragePath("your folder");