Auf dieser Seite

Qt HTTP Server

Qt HTTP Server wird die Integration von HTTP-Serverfunktionen in eine Anwendung unterstützt. Der Hauptanwendungsfall besteht darin, die Funktionen der Anwendung über REST-APIs bereitzustellen oder Geräte in einer vertrauenswürdigen Umgebung auch über HTTP konfigurierbar zu machen. Eine vertrauenswürdige Umgebung bedeutet auch, dass die „ Qt HTTP Server “ weder direkt mit dem Internet verbunden sein darf noch dazu verwendet werden darf, Funktionen eines allgemeinen Webservers für Endbenutzer bereitzustellen. Weitere Informationen finden Sie unter „Einschränkungen und Sicherheit“.

Übersicht

Qt HTTP Server bietet Bausteine für die Einbettung eines schlanken HTTP-Servers, der HTTP/2, HTTP/1.1 und HTTP/1.0 unterstützt, in eine Anwendung. Es gibt Klassen für die gesendeten und empfangenen Nachrichten sowie für die verschiedenen Komponenten eines HTTP-Servers.

Die Klasse „ QHttpServer “ verfügt über die Funktion „ route()“, um Callables an verschiedene eingehende URLs zu binden. Diese Callables können als Argumente eine „ extensible “-Sammlung verschiedener kopierbarer Typen entgegennehmen, die aus der URL geparst werden. Unterstützt werden die meisten numerischen Typen sowie „ QString “, „ QByteArray “ und „ QUrl “. Optional können die Callables auch „ QHttpServerRequest “- und „ QHttpServerResponder “-Objekte als Argumente entgegennehmen. Die Klasse „ QHttpServerRequest “ enthält alle Informationen einer eingehenden Anfrage und wird benötigt, um den „ body()“ aus einer POST-HTTP-Anfrage abzurufen. Die aufrufbaren Funktionen geben entweder ein „ QHttpServerResponse “-Objekt zurück oder antworten unter Verwendung des Arguments „ QHttpServerResponder “. Die Klasse „ QHttpServerResponse “ enthält eine vollständige Antwort und verfügt über zahlreiche Konstruktoren für verschiedene Typen, während die Klasse „ QHttpServerResponder “ verschiedene Methoden zum Zurückschreiben an den Client bietet.

Die Klasse „ QHttpServer “ verfügt außerdem über die Funktion „ addAfterRequestHandler()“, um eine „ QHttpServerResponse “ weiter zu verarbeiten, sowie über die Funktion „ setMissingHandler()“, um das Standardverhalten zu überschreiben, bei dem „ 404 Not Found “ zurückgegeben wird, wenn keine Routen übereinstimmen. Von der Klasse „ QAbstractHttpServer “ erbt sie die Funktion „ bind()“, um eine Verbindung zu einem empfangsbereiten „ QTcpServer “, „ QSslServer “ oder „ QLocalServer “ herzustellen.

Ein HTTP-Server kann auch erstellt werden, indem man die Klasse ` QAbstractHttpServer ` unterklassifiziert und die Funktionen ` handleRequest()` sowie ` missingHandler()` überschreibt.

Die Laufzeitprotokollierung lässt sich wie hier beschrieben konfigurieren.

Einschränkungen und Sicherheit

Qt HTTP Server verfügt nicht über viele der fortgeschrittenen Funktionen und Optimierungen, die allgemeine HTTP-Server bieten. Außerdem wurde es hinsichtlich verschiedener Angriffsvektoren über das Netzwerk nicht in gleichem Maße geprüft. Verwenden Sie „ Qt HTTP Server “ daher nur für lokale Verbindungen oder in einem vertrauenswürdigen Netzwerk und machen Sie die Ports nicht für das Internet zugänglich.

Als grundlegende Sicherheitsmaßnahme können Sie jedoch HTTPS-Unterstützung hinzufügen. Wenn Qt mit TLS-Unterstützung kompiliert wurde, können Sie den HTTP-Server an ein ` QSslServer `-Objekt binden, wodurch die Verarbeitung von Transport Layer Security gewährleistet wird.

Für die HTTP/2-Unterstützung ist die „ QSslSocket::SupportedFeature::ServerSideAlpn “-Funktion des aktiven TLS-Backends erforderlich. Um zu überprüfen, ob ein Backend dies unterstützt, verwenden Sie „ QSslSocket::isFeatureSupported “.

Siehe „Sicherheitshinweise zuQt HTTP Server “.

Verwendung des Moduls

Die Verwendung eines Qt-Moduls erfordert die Verknüpfung mit der Modulbibliothek, entweder direkt oder über andere Abhängigkeiten. Mehrere Build-Tools bieten hierfür spezielle Unterstützung, darunter CMake und qmake.

Erstellen mit CMake

Verwenden Sie den Befehl „ find_package() “, um die benötigten Modulkomponenten im Qt6-Paket zu finden:

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

Siehe auch die Übersicht „Erstellen mit CMake “.

Erstellen mit qmake

Um das Modul für die Erstellung mit qmake zu konfigurieren, fügen Sie das Modul als Wert der Variablen `QT` in der `.pro`-Datei des Projekts hinzu:

QT += httpserver

Lizenzen

Qt HTTP Server ist unter kommerziellen Lizenzen von The Qt Company verfügbar. Darüber hinaus ist es unter der GNU General Public License, Version 3, verfügbar. Weitere Einzelheiten finden Sie unter „Qt-Lizenzierung “.

Referenz

Beispiele

Das Modul stellt die folgenden Beispiele als Leitfaden für die Verwendung der API bereit.

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