Cette page

Qt HTTP Server

Qt HTTP Server permet d’intégrer des fonctionnalités de serveur HTTP dans une application. Le principal cas d’utilisation consiste à exposer les fonctionnalités de l’ Qt HTTP Server via des API REST, ou à rendre les appareils d’un environnement de confiance également configurables via HTTP. Un environnement de confiance implique également que l’ ne doit pas être directement exposée à Internet ni utilisée pour fournir les fonctionnalités d’un serveur Web généraliste aux utilisateurs finaux. Pour plus de détails, consultez les sections « Limitations » et « Sécurité ».

Présentation

Qt HTTP Server fournit les éléments de base permettant d’intégrer dans une application un serveur HTTP léger prenant en charge les protocoles HTTP/2, HTTP/1.1 et HTTP/1.0. Il existe des classes pour les messages envoyés et reçus, ainsi que pour les différentes composantes d’un serveur HTTP.

La classe ` QHttpServer ` dispose d’une fonction ` route()` permettant de lier des fonctions appelables à différentes URL entrantes. Ces fonctions appelables peuvent prendre comme arguments une collection ` extensible ` de différents types copiables extraits de l’URL. Les types pris en charge sont la plupart des types numériques, ` QString`, ` QByteArray` et ` QUrl`. En option, les fonctions appelables peuvent également prendre des objets ` QHttpServerRequest ` et ` QHttpServerResponder ` comme arguments. La classe QHttpServerRequest contient toutes les informations relatives à une requête entrante et est nécessaire pour obtenir la méthode body() à partir d’une requête HTTP POST. Les fonctions appelables renvoient soit un objet QHttpServerResponse, soit une réponse en utilisant l’argument QHttpServerResponder. La classe QHttpServerResponse contient une réponse complète et dispose de nombreux constructeurs pour différents types, tandis que la classe QHttpServerResponder propose diverses méthodes pour renvoyer des données au client.

La classe QHttpServer dispose également d’une fonction addAfterRequestHandler() permettant de traiter davantage une requête QHttpServerResponse, ainsi que d’une fonction setMissingHandler() permettant de redéfinir le comportement par défaut consistant à renvoyer 404 Not Found lorsqu’aucune route n’est trouvée. Elle hérite de la classe QAbstractHttpServer la fonction bind() permettant de se lier à un port d’écoute QTcpServer, QSslServer ou QLocalServer.

Il est également possible de créer un serveur HTTP en créant une sous-classe de la classe ` QAbstractHttpServer ` et en redéfinissant les fonctions ` handleRequest()` et ` missingHandler()`.

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

Limites et sécurité

Qt HTTP Server ne dispose pas de nombreuses fonctionnalités avancées ni des optimisations que l’on trouve dans les serveurs HTTP polyvalents. Il n’a pas non plus fait l’objet d’une analyse aussi approfondie concernant les différents vecteurs d’attaque sur le réseau. Utilisez donc Qt HTTP Server uniquement pour des connexions locales ou au sein d’un réseau de confiance, et n’exposez pas les ports sur Internet.

Vous pouvez toutefois ajouter la prise en charge de HTTPS à titre de 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 assure la gestion de la sécurité de la couche de transport (TLS).

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 cela en charge, utilisez ` QSslSocket::isFeatureSupported`.

Voir Considérations de sécurité relatives à l'Qt HTTP Server .

Utilisation du module

L'utilisation d'un module Qt nécessite une liaison avec la bibliothèque du module, soit directement, soit via d'autres dépendances. Plusieurs outils de compilation prennent cela en charge, notamment CMake et qmake.

Compilation avec CMake

Utilisez la commande « find_package() » pour localiser les composants du module nécessaires dans le paquet Qt6 :

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

Voir également la présentation de la compilation avec CMake.

Compilation avec qmake

Pour configurer le module en vue d'une compilation avec qmake, ajoutez le module en tant que 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. Il est également disponible sous licence GNU General Public License, version 3. Voir Licences Qt pour plus de détails.

Référence

Exemples

Le module fournit les exemples suivants à titre de guide d'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.