2017-12-10 11 views
1

QWebEngineViewのOffTheRecordプロファイルを設定するにはどうすればよいですか?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(); 
} 

答えて

1

この設定を試してみてください:すべての

まず、すべての可能なクッキーを無効にします。あなたは安全なストレージにすべての一時的なファイルを保存しようとすると、指定したフォルダに書き込むことができる場合setPersistentCookiesPolicyを使用してNoPersistentCookies

に設定します。

auto *profile = QWebEngineProfile::defaultProfile(); 
profile->setCachePath("yourfolder"); 
profile->setPersistentStoragePath("yourfolder"); 

これはあなたにすべての時間のファイルの制御を与える必要がありますWebエンジンによって生成されます。

Qtリポジトリを調べると、この状態を管理する変数がBrowserContextAdapterで制御されていることがわかります。この変数は、ブラウザコンテキストの作成中にストレージパスが空の場合はfalseに設定されます。あなたはこのプロファイルを使用して手動で任意の単一QWebEnginePageを作成するためにそれを使用する場合、これは簡単に行うことができ

QWebEngineProfile* profile = new QWebEngineProfile(QString(), parent) 
std::cout << "isOffTheRecord: " << profile->isOffTheRecord() << std::endl; // Should return true 

と:だからあなたはパスとして空のQStringを使用して独自のQWebEngineProfileを作成して、デフォルトのプロファイルとしてそれを使用する場合

setPageを使用してQWebEngineViewでそれを設定します。

engineview->setPage(new QWebEnginePage(profile, parent)); 
0

QWebEngineProfileのdefault constructor状態のドキュメント:

親の親で新しいオフ・ザ・レコードのプロファイルを作成します。

オフ・レコード・プロファイルはローカル・マシンにレコードを残さず、 には永続データまたはキャッシュがありません。したがって、HTTPキャッシュは メモリ内にしか存在せず、クッキーは非永続的でしかありません。 を変更しようとすると、これらの設定は無効になります。

デフォルトQWebEngineProfileを作成したら、QWebEnginePageにそれを渡し、自分のQWebEngineViewにページとしてそれを設定します。

StoragePath: "" 
isOffTheRecord: true 
:あなたは、これが標準出力に表示されるはずの上を実行している場合

#include <QApplication> 
#include <QWebEngineView> 
#include <QWebEngineSettings> 
#include <QWebEnginePage> 
#include <QWebEngineProfile> 
#include <QDebug> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QWebEngineView view; 
    QWebEngineProfile profile; 
    QWebEnginePage page(&profile); 

    qDebug() << "StoragePath:" << profile.persistentStoragePath(); 
    qDebug() << "isOffTheRecord:" << profile.isOffTheRecord(); 

    view.setPage(&page); 
    view.setUrl(QUrl(QStringLiteral("http://www.stackoverflow.com/"))); 
    view.show(); 

    return a.exec(); 
} 

:ここ

は、コンパイルして実行する(Mac OS上でテスト)簡単な例です

関連する問題