我正在将我的应用程序从WebKit移植到WebEngine(似乎这对于渲染angular-basad html来说更好)。 我面临的问题,我不能让QtWebEngine装载本地的iframe,尽管我设置,我发现所有可能的设置:QtWebEngine:iframe中的“不允许加载本地资源”,如何禁用web安全?
从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);
最简单的例子是采取WebEngine基于fancyBrowser(\实例\ Qt的5.4 \ webenginewidgets \ fancybrowser),并尝试在它加载本地HTML文件是这样的:
的index.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>
some_iframe.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>La-la-la</title>
</head>
<body>
Lalala
</body>
</html>
如果你设置的环境变量QTWEBENGINE_REMOTE_DEBUGGING一些端口,那么你就可以打开127.0.0.1:port并查看控制台此错误:
"Not allowed to load local resource".
我真的没有想法现在如何解决这个问题...应该有一些方法可以传递给WebEngine,如“--disable-web-security”...
感谢您的帮助!
你怎么打开它在幻想浏览器?您是否输入了文件:// /index.html url? –
另外,请粘贴完整的错误。 “不允许加载本地资源:XXXXXXXXXXXXX” 它抱怨的文件名称是什么? –