小编Nic*_*erg的帖子

QtWebEngine:iframe 的“不允许加载本地资源”,如何禁用网络安全?

我正在将我的应用程序从 WebKit 移植到 WebEngine(似乎它更适合呈现 angular-basad html)。我遇到了无法启用 QtWebEngine 加载本地 iframe 的问题,尽管我已经设置了我发现的所有可能的设置:

mainwindow.cpp 中的代码

view->page()->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true);
view->page()->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
view->page()->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);

view->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true);
view->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
view->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);
Run Code Online (Sandbox Code Playgroud)

最简单的例子是采用基于 WebEngine 的 FancyBrowser (\Examples\Qt-5.4\webenginewidgets\fancybrowser) 并尝试在其中加载本地 html 文件,如下所示:

索引.html:

<html>
<head>
    <title>Hi there</title>
</head>
<body>
    This is a page
    a simple page
    <iframe id="some_idrame" width="0" height="0" style="border: none" src="some_iframe.html" name="target" sandbox="allow-scripts"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

some_iframe.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>La-la-la</title>
</head>
<body>
    Lalala 
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果您将 env var QTWEBENGINE_REMOTE_DEBUGGING 设置为某个端口,那么您可以打开 127.0.0.1:port 并在控制台中看到此错误:

"Not allowed …
Run Code Online (Sandbox Code Playgroud)

html javascript qtwebengine

5
推荐指数
1
解决办法
4438
查看次数

标签 统计

html ×1

javascript ×1

qtwebengine ×1