- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何为 QWebEngineView 设置 OffTheRecord 配置文件?
我在 Linux 上使用 QT5.10。
我将在具有只读文件系统的嵌入式环境中使用它,我需要防止 WebEngine 在文件系统中写入文件和创建文件夹。
#include <QApplication>
#include <QWebEngineView>
#include <QWebEngineSettings>
#include <QWebEngineProfile>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QWebEngineView view;
auto profile = view.page()->profile();
profile->setHttpCacheType(QWebEngineProfile::MemoryHttpCache);
profile->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);
//profile->setPersistentStoragePath(nullptr);
std::cout << "StoragePath: " << profile->persistentStoragePath().toStdString() << std::endl;
std::cout << "isOffTheRecord: " << profile->isOffTheRecord() << std::endl;
profile->settings()->setAttribute(QWebEngineSettings::AllowRunningInsecureContent, true); // Since Qt5.7
profile->settings()->setAttribute(QWebEngineSettings::XSSAuditingEnabled, false);
view.setUrl(QUrl(QStringLiteral("http://localhost/index.html")));
view.resize(1920, 1080);
view.show();
return a.exec();
}
最佳答案
试试这个配置:
首先,禁用任何可能的 cookie。使用 setPersistentCookiesPolicy并将其设置为 NoPersistentCookies
如果您可以写入给定文件夹,请尝试将所有临时文件保存在安全存储中:
auto *profile = QWebEngineProfile::defaultProfile();
profile->setCachePath("yourfolder");
profile->setPersistentStoragePath("yourfolder");
这应该可以让您控制 Web 引擎生成的所有临时文件。
如果没有,查看 Qt 存储库,您可以看到管理此状态的变量在 BrowserContextAdapter 中控制。 ,如果在创建浏览器上下文时存储路径为空,则此变量设置为 false。
因此,如果您使用空 QString 作为路径创建自己的 QWebEngineProfile,并将其用作默认配置文件:
QWebEngineProfile* profile = new QWebEngineProfile(QString(), parent)
std::cout << "isOffTheRecord: " << profile->isOffTheRecord() << std::endl; // Should return true
如果您使用它来创建任何单个 QWebEnginePage,这可以很容易地完成手动使用此配置文件并使用 setPage 在您的 QWebEngineView 中设置它:
engineview->setPage(new QWebEnginePage(profile, parent));
关于c++ - 如何为 QWebEngineView 设置 OffTheRecord 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47741388/
好吧,我绞尽脑汁想弄明白 QWebEngine。 我理解实现虚拟功能的概念,但我不确定如何让用户点击的 url 成为页面或 View 请求的 newTab/newWindow 链接。 QWebEngi
当我使用以下代码浏览到一个页面时,结果是另一种语言(我认为是俄语)。当我在其他浏览器中浏览到相同的 url 时,我会按预期获得英文 404 页面。我尝试设置接受语言,但这没有帮助。我错过了什么? im
我在 PyQt5 和 Python 3.6 中使用 QWebEngineView 小部件。我想在加载页面时显示进度。出于演示目的,我只是使用打印语句来执行此操作(稍后我想让进度条小部件出现、显示进度并
我正在尝试使用 QWebEngineView 创建一个窗口,并在窗口关闭后删除 QWebEngineView。但是,QWebEngineView 似乎永远不会被删除,并且会继续运行我加载的任何 QUr
我有以下代码片段在 PySide 中工作,需要将其转换为在 PySide2 中工作。目的是在单击时强制所有链接在系统浏览器中打开(而不是小部件尝试加载它们): from PySide.QtWebKit
我正在将我的代码从 QtWebKit 转移到 QtWebEngine。总的来说,过渡相当顺利,但是,我被困在一个特定问题上。我使用 QWebEngineView 来显示 Google map 页面。一
如何在QWebEngineView中改变用户代理?我知道 QWebView 有一种方法可以做到这一点,但我没有找到 QWebEngineView 的解决方案。 最佳答案 在构建 QWebEngineP
如何检测 QWebEngineView 小部件中的鼠标点击? 我试过这个但不起作用: class MyWin(QtWidgets.QMainWindow): def __init__(self
我想编写一个程序来自动测试不同屏幕尺寸的网页尺寸。我使用 QWebEngineView 创建窗口,我需要模拟用户鼠标在网页中单击并拖放元素。我试过 qApp->sendEvent 和 qApp->po
我想开发一个桌面应用程序,该应用程序涉及每秒从串行端口接收地理坐标并实时添加到 map 中。该 map 应类似于以下链接: 我编写了一段代码来测试 Folium 执行此任务的能力。 import sy
我正在构建一个 pyqt5 桌面界面,我在其中使用 QWebEngineView 来显示一个 html 文件,其中我显示了 Leaflet map 。这工作正常。下一步是导出用户添加到 map 的所有
我有这部分工作,但我面临几个困难: 1) 看来 QWebEnginePage 需要一个 QWebEngineView。 (请参阅此处的 setView() 方法: https://code.woboq
我正在尝试在 Qt 中创建一个加载 URL 的对话框(我不想向最终用户公开,因此是一个对话框)。一旦用户在页面上输入了他们的凭据,服务器就会返回一个我想要捕获的重定向 URL。我怎样才能做到这一点?
有没有功能 QWebView 和 QWebEngineView 的区别?如果我理解正确,QWebView 是 webkit,而 QWebEngineView 是闪烁的。程序员有什么区别吗?一个比另一个
我来自 tkinter 背景,所有东西都可以放在框架中。 我怎样才能让我当前的工作代码结果(它启动一个页面的 WebEngine View ,在这个例子中是谷歌)位于主窗口中,如图所示?例如,我希望将
我来自 tkinter 背景,所有东西都可以放在框架中。 我怎样才能让我当前的工作代码结果(它启动一个页面的 WebEngine View ,在这个例子中是谷歌)位于主窗口中,如图所示?例如,我希望将
我最终想要完成的是捕获用户在网站中输入的用户名和密码。例如,如果用户在 Facebook 登录中输入“test@example.com”作为电子邮件地址,然后单击“提交”,我想将该电子邮件地址存储在我
我有一个简单的网页,我想提取文本 My First Heading。 //This is a single line comment /* This is a block comment */
也许这是一个错误。有一个顶级小部件必须有阴影。在那个小部件中,我想显示一个浏览器(只能呈现 html)。顶级小部件的不透明度必须是可调的。为了使投影效果如预期(不显示黑色边框),我们需要将 Qt::W
编辑:这不是重复的。链接的问题处理 CORS 安全问题,浏览器不允许您从不同来源加载脚本。我的问题与基本资源加载方案有关(file:/// vs qrc:/)。 我正在尝试使用 file:/// 方案
我是一名优秀的程序员,十分优秀!