Sur cette page

QWebEngineUrlSchemeHandler Class

La classe QWebEngineUrlSchemeHandler est une classe de base pour gérer les schémas d'URL personnalisés. Plus d'informations...

En-tête : #include <QWebEngineUrlSchemeHandler>
CMake : find_package(Qt6 REQUIRED COMPONENTS WebEngineCore)
target_link_libraries(mytarget PRIVATE Qt6::WebEngineCore)
qmake : QT += webenginecore
Héritages : QObject

Fonctions publiques

QWebEngineUrlSchemeHandler(QObject *parent = nullptr)
virtual ~QWebEngineUrlSchemeHandler()
virtual void requestStarted(QWebEngineUrlRequestJob *request) = 0

Description détaillée

Un gestionnaire de schéma personnalisé est, d'une manière générale, similaire à une application web servie par HTTP. Cependant, comme les schémas personnalisés sont intégrés directement dans le moteur web, ils présentent un avantage en termes d'efficacité et de sécurité : Il n'est pas nécessaire de générer et d'analyser des messages HTTP ou de transférer des données sur des sockets, ni d'intercepter ou de surveiller le trafic.

Pour mettre en œuvre un schéma d'URL personnalisé pour QtWebEngine, vous devez d'abord créer une instance de QWebEngineUrlScheme et l'enregistrer à l'aide de QWebEngineUrlScheme::registerScheme().

Comme les schémas personnalisés sont intégrés directement dans le moteur web, ils ne doivent pas nécessairement suivre les règles de sécurité standard qui s'appliquent au contenu web ordinaire. Selon la configuration choisie, le contenu servi par un schéma personnalisé peut avoir accès aux ressources locales, être configuré pour ignorer les règles de Content-Security-Policy ou, à l'inverse, se voir refuser l'accès à tout autre contenu. Si le contenu normal doit y accéder, assurez-vous que l'accès inter-origine est activé et, si l'accès se fait par HTTPS, qu'il est marqué comme sécurisé.

Remarque : veillez à créer et à enregistrer l'objet scheme avant l' instanciation de l'objet QGuiApplication ou QApplication.

Ensuite, vous devez créer une classe dérivée de QWebEngineUrlSchemeHandler et réimplémenter la méthode requestStarted().

Enfin, installez l'objet scheme handler via QWebEngineProfile::installUrlSchemeHandler() ou QQuickWebEngineProfile::installUrlSchemeHandler().

class MySchemeHandler : public QWebEngineUrlSchemeHandler
{
public:
    MySchemeHandler(QObject *parent = nullptr);
    void requestStarted(QWebEngineUrlRequestJob *job)
    {
        const QByteArray method = job->requestMethod();
        const QUrl url = job->requestUrl();

        if (isValidUrl(url)) {
            if (method == QByteArrayLiteral("GET"))
                job->reply(QByteArrayLiteral("text/html"), makeReply(url));
            else // Unsupported method
                job->fail(QWebEngineUrlRequestJob::RequestDenied);
        } else {
            // Invalid URL
            job->fail(QWebEngineUrlRequestJob::UrlNotFound);
        }
    }
    bool isValidUrl(const QUrl &url) const // ....
    QIODevice *makeReply(const QUrl &url) // ....
};

int main(int argc, char **argv)
{
    QWebEngineUrlScheme scheme("myscheme");
    scheme.setSyntax(QWebEngineUrlScheme::Syntax::HostAndPort);
    scheme.setDefaultPort(2345);
    scheme.setFlags(QWebEngineUrlScheme::SecureScheme);
    QWebEngineUrlScheme::registerScheme(scheme);

    // ...
    QApplication app(argc, argv);
    // ...

    // installUrlSchemeHandler does not take ownership of the handler.
    MySchemeHandler *handler = new MySchemeHandler(parent);
    QWebEngineProfile::defaultProfile()->installUrlSchemeHandler("myscheme", handler);
}

Voir également QWebEngineUrlScheme.

Documentation des fonctions membres

QWebEngineUrlSchemeHandler::QWebEngineUrlSchemeHandler(QObject *parent = nullptr)

Construit un nouveau gestionnaire de schéma d'URL.

Le gestionnaire est créé avec le parent parent.

[virtual noexcept] QWebEngineUrlSchemeHandler::~QWebEngineUrlSchemeHandler()

Supprime un gestionnaire de schéma d'URL personnalisé.

[pure virtual] void QWebEngineUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)

Cette méthode est appelée chaque fois qu'une requête request pour le schéma enregistré est lancée.

Cette méthode doit être réimplémentée par tous les gestionnaires de schémas URL personnalisés. La demande est asynchrone et ne doit pas être traitée immédiatement.

Voir aussi QWebEngineUrlRequestJob.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.