Sur cette page

Qt HTTP Server

Qt HTTP Server supporte l'intégration d'une fonctionnalité de serveur HTTP dans une application. Les cas d'utilisation courants sont l'exposition de la fonctionnalité de l'application via des API REST, ou la configuration d'appareils dans un environnement de confiance via HTTP. Les limitations sont décrites dans Limitations et sécurité.

Vue d'ensemble

Qt HTTP Server fournit des éléments de construction pour intégrer un serveur HTTP léger basé sur les RFC 2616 et RFC 9113 dans une application. Il existe des classes pour les messages envoyés et reçus, et pour les différentes parties d'un serveur HTTP.

La classe QHttpServer possède une fonction route() qui permet de lier des éléments appelables à différentes URL entrantes. Ces éléments appelables peuvent prendre comme arguments une collection extensible de différents types copiables qui sont analysés à partir de l'URL. Les types pris en charge sont la plupart des types numériques, QString, QByteArray, et QUrl. En option, les callables peuvent également prendre en argument des objets QHttpServerRequest et QHttpServerResponder. La classe QHttpServerRequest contient toutes les informations relatives à une requête entrante et est nécessaire pour obtenir l'objet body() d'une requête HTTP POST. Les callables renvoient un objet QHttpServerResponse ou répondent à l'aide de l'argument QHttpServerResponder. La classe QHttpServerResponse contient une réponse complète et possède de nombreux constructeurs pour différents types, tandis que la classe QHttpServerResponder possède diverses méthodes pour répondre au client.

La classe QHttpServer dispose également d'une fonction addAfterRequestHandler() pour traiter un QHttpServerResponse supplémentaire, et d'une fonction setMissingHandler() pour remplacer le comportement par défaut consistant à renvoyer 404 Not Found lorsqu'aucun itinéraire ne correspond. La classe QAbstractHttpServer hérite d'une fonction bind() pour se lier à un serveur d'écoute QTcpServer, QSslServer ou QLocalServer.

Un serveur HTTP peut également être créé en sous-classant la classe QAbstractHttpServer et en surchargeant les fonctions handleRequest() et missingHandler().

La journalisation en cours d'exécution peut être configurée comme décrit ici.

Limites et sécurité

Qt HTTP Server n'a pas la plupart des fonctionnalités et optimisations les plus avancées dont disposent les serveurs HTTP d'usage général. Il n'a pas non plus fait l'objet du même examen minutieux en ce qui concerne les divers vecteurs d'attaque sur le réseau. N'utilisez donc Qt HTTP Server que pour des connexions locales ou dans un réseau de confiance, et n'exposez pas les ports à l'internet.

Vous pouvez cependant ajouter le support HTTPS comme mesure de sécurité de base. Si Qt est compilé avec la prise en charge de TLS, vous pouvez lier le serveur HTTP à un objet QSslServer, ce qui permet de gérer la sécurité de la couche transport.

La fonctionnalité QSslSocket::SupportedFeature::ServerSideAlpn du backend TLS actif est nécessaire pour la prise en charge de HTTP/2. Pour vérifier si un backend prend en charge cette fonctionnalité, utilisez QSslSocket::isFeatureSupported.

Utilisation du module

L'utilisation d'un module Qt nécessite l'établissement d'un lien avec la bibliothèque du module, soit directement, soit par l'intermédiaire d'autres dépendances. Plusieurs outils de construction ont un support dédié pour cela, y compris CMake et qmake.

Construction avec CMake

Utilisez la commande find_package() pour localiser les composants du module nécessaire dans le paquetage Qt6 :

find_package(Qt6 REQUIRED COMPONENTS HttpServer)
target_link_libraries(mytarget PRIVATE Qt6::HttpServer)

Voir aussi l'aperçu de la construction avec CMake.

Construire avec qmake

Pour configurer le module afin qu'il soit construit avec qmake, ajoutez le module comme valeur de la variable QT dans le fichier .pro du projet :

QT += httpserver

Licences

Qt HTTP Server est disponible sous licence commerciale auprès de The Qt Company. En outre, il est disponible sous la licence publique générale GNU, version 3. Voir Qt Licensing pour plus de détails.

Référence

Exemples

Le module fournit les exemples suivants pour guider l'utilisation de l'API.

© 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.