Informationen zu WinHTTP

Important

Auswählen des richtigen Windows HTTP-Stapels

Szenario Empfohlene API
Windows Dienst, Daemon oder serverseitiger Code WinHTTP – für Dienste konzipiert; unterstützt Identitätswechsel, Sitzungsisolation
Desktopanwendung, die Proxyeinstellungen, Cookies oder Anmeldeaufforderungen in den Internetoptionen (IE) benötigt WinINet – erbt automatisch die Internetoptionenkonfiguration des Benutzers.
Moderne C++-App (UWP oder Desktop) Windows. Web.Http (C++/WinRT) – moderne, asynchrone, moderne TLS-Unterstützung
.NET-Anwendung System.Net.Http.HttpClient – verwaltete, plattformübergreifende, poolbasierte Verbindungen
Plattformübergreifendes C/C++ libcurl- oder Plattform-HTTP-Bibliotheken – nicht Windows-spezifisch

Wichtige Unterschiede von WinINet: WinHTTP gibt keine Cookies, Caches oder Anmeldeinformationen für den Browser des Benutzers weiter. Es gibt keine UI-Aufforderung. Die Ausführung mit Dienstkonten und Identitätswechsel wird unterstützt. Einen vollständigen Funktionsvergleich finden Sie unter WinINet im Vergleich zu WinHTTP .

Note

Sicherheitsstandardwerte – WinHTTP folgt der OS Schannel-Konfiguration für die TLS-Versionsverhandlung. Serverzertifikate immer überprüfen; WINHTTP_OPTION_SECURITY_FLAGS in der Produktion niemals so festlegen, dass Zertifikatfehler ignoriert werden. Informationen zur TLS-Konfiguration finden Sie unter WinHTTP-Sicherheitsüberlegungen.

Note

Für App-Container und Systemdienste seit Windows 10, Version 1709, ist HTTP/2 (siehe RFC7540) standardmäßig aktiviert.

Microsoft Windows HTTP Services (WinHTTP) bietet Ihnen eine servergestützte, allgemeine Schnittstelle zu den HTTP/2- und 1.1-Internetprotokollen. WinHTTP ist für die Verwendung in serverbasierten Szenarien von Serveranwendungen konzipiert, die mit HTTP-Servern kommunizieren.

WinINet wurde als HTTP-Clientplattform für interaktive Desktopanwendungen entwickelt. WinINet zeigt eine Benutzeroberfläche für einige Vorgänge an, z. B. das Sammeln von Benutzeranmeldeinformationen. WinHTTP behandelt diese Vorgänge jedoch programmgesteuert. Serveranwendungen, die HTTP-Clientdienste erfordern, sollten WinHTTP anstelle von WinINet verwenden. Weitere Informationen finden Sie unter Portieren von WinINet-Anwendungen zu WinHTTP.

WinHTTP wurde auch für die Verwendung in Systemdiensten und HTTP-basierten Clientanwendungen entwickelt. Anwendungen mit einem einzelnen Benutzer, die FTP-Protokollfunktionen, Cookiepersistenz, Zwischenspeicherung, automatische Verarbeitung von Anmeldeinformationen, Internet Explorer Kompatibilität oder Unterstützung auf downlevel-Plattform erfordern, sollten jedoch die Verwendung von WinINet in Betracht ziehen.

Auf diese Schnittstelle kann über C/C++ über die WinHTTP-Anwendungsprogrammierschnittstelle (API) oder über die IWinHttpRequest - und IWinHttpRequestEvents-Schnittstellen zugegriffen werden. Auf WinHTTP kann auch aus Skripts und aus Microsoft Visual Basic über das WinHTTP-Objekt zugegriffen werden. Weitere Informationen und Beschreibungen der einzelnen Funktionen finden Sie in der WinHTTP-Funktionsreferenz für die jeweilige Sprache.

Ab Windows 8 stellt WinHTTP APIs bereit, um Verbindungen mithilfe des WebSocket-Protokollszu ermöglichen, z. B. WinHttpWebSocketSend und WinHttpWebSocketReceive.

Vorsicht

WinHTTP wird nicht erneut ausgeführt, außer während des asynchronen Abschlussrückrufs. Das heißt, solange für einen Thread ein Aufruf einer der WinHTTP-Funktionen aussteht, z. B. WinHttpSendRequest, WinHttpReceiveResponse, WinHttpQueryDataAvailable, WinHttpSendData oder WinHttpWriteData, darf der Thread WinHTTP erst dann ein zweites Mal aufrufen, wenn der erste Aufruf abgeschlossen ist. Ein Szenario, in dem es zu einem zweiten Aufruf kommen kann, ist wie folgt: Wenn eine Anwendung einen asynchronen Prozeduraufruf (APC) für den Thread, der WinHTTP aufruft, in die Warteschlange einstellt und WinHTTP intern eine unterbrechbare Warteoperation ausführt, kann der APC ausgeführt werden. Wenn die APC-Routine zufällig ebenfalls WinHTTP aufruft, tritt sie erneut in die WinHTTP-API ein, und der interne Zustand von WinHTTP kann beschädigt werden.

WinHTTP 5.1 Funktionen

Die folgenden Features wurden in Version 5.1 von WinHTTP hinzugefügt:

  • IPv6-Unterstützung.
  • AutoProxy-Funktionen.
  • HTTP/1.0-Protokoll, einschließlich Unterstützung für persistente Keep-Alive-Verbindungen und Sitzungscookies.
  • Unterstützung von HTTP/1.1-Blockübertragungen für HTTP-Antworten.
  • Keep-Alive-Pooling von anonymen Verbindungen über Sitzungen hinweg.
  • Ssl-Funktionalität (Secure Sockets Layer), einschließlich Clientzertifikaten. Zu den unterstützten SSL-Protokollen gehören: SSL 2.0, SSL 3.0 und Transport Layer Security (TLS) 1.0.
  • Unterstützung für die Server- und Proxyauthentifizierung, einschließlich integrierter Unterstützung für Microsoft Passport 1.4 und das Negotiate/Kerberos-Paket.
  • Automatische Verarbeitung von Weiterleitungen, sofern nicht deaktiviert.
  • Skriptfähige Schnittstelle zusätzlich zur API.
  • Trace-Hilfsprogramm zur Behebung von Problemen.

Eine Reihe von WinINet-Features werden in WinHTTP nicht unterstützt, einschließlich URL-Zwischenspeicherung und persistenten Cookies, Autoproxy, Autodialing, Offlineunterstützung und File Transfer Protocol (FTP).

Weitere Informationen zu änderungen, die in Version 5.1 eingeführt wurden, finden Sie unter What's New in WinHTTP 5.1.

Erste Schritte mit WinHTTP

Weitere Informationen zu WinHTTP finden Sie in den folgenden Themen.