5

私は自分のアプリケーションを 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);

最も簡単な例は、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>

some_iframe.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>La-la-la</title>
</head>
<body>
    Lalala 
</body>
</html>

env var QTWEBENGINE_REMOTE_DEBUGGING をいくつかのポートに設定すると、127.0.0.1:port を開いて、コンソールに次のエラーが表示されます。

"Not allowed to load local resource".

この問題を解決する方法が本当にわかりません...「--disable-web-security」のようなものを WebEngine に渡す方法があるはずです...

助けてくれてありがとう!

4

3 に答える 3