Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
- WinINet vs. WinHTTP vergleicht die beiden Technologien für den Zugriff auf HTTP.
- WinHTTP-Versionen beschreiben den Versionsverlauf von WinHTTP.
- Neuigkeiten in WinHTTP 5.1 beschreibt Änderungen und neue Features in WinHTTP 5.1.
- Die Netzwerkterminologie beschreibt nützliche Konzepte und Terminologie im Zusammenhang mit Netzwerken im Allgemeinen und insbesondere im HTTP-Protokoll.
- Wenn Sie eine WinHTTP-Schnittstelle auswählen , werden die C/C++-API und die COM-Schnittstelle für WinHTTP beschrieben.
- Überlegungen zur WinHTTP-Sicherheit beschreiben Sicherheitsprobleme, die bei der Verwendung von WinHTTP beachtet werden müssen.
- Das Portieren von WinINet-Anwendungen zu WinHTTP beschreibt, wie Sie Ihre vorhandenen WinINet-Anwendungen so ändern, dass sie die WinHTTP-API verwenden.