Informace o winHTTP

Important

Výběr správného zásobníku HTTP systému Windows

Scénář Doporučené rozhraní API
Služba systému Windows, démon nebo serverový kód WinHTTP – určeno pro služby; podporuje impersonaci, izolaci relace
Desktopová aplikace, která potřebuje nastavení proxy serveru Internet Options (IE), soubory cookie nebo výzvy k zadání přihlašovacích údajů WinINet – dědí konfiguraci možností internetu uživatele automaticky.
Moderní aplikace C++ (UPW nebo Desktop) Windows.Web.Http (C++/WinRT) — moderní, primárně asynchronní, moderní podpora TLS
Aplikace .NET System.Net.Http.HttpClient – spravovaná, multiplatformní připojení ve fondu
Multiplatformní C/C++ libcurl nebo platformní knihovny HTTP — nikoli specifické pro Windows

Hlavní rozdíly mezi sítí WinINet: WinHTTP nesdílí soubory cookie, mezipaměť ani přihlašovací údaje v prohlížeči uživatele. Nezobrazuje žádné výzvy uživatelského rozhraní. Podporuje spouštění v účtech služeb a zosobnění. Úplné porovnání funkcí najdete v tématu WinINet vs. WinHTTP .

Poznámka

Výchozí nastavení zabezpečení – WinHTTP se řídí konfigurací Schannel operačního systému pro vyjednávání verzí protokolu TLS. Vždy ověřujte certifikáty serveru; nikdy nenastavujte WINHTTP_OPTION_SECURITY_FLAGS tak, aby ignorovalo chyby certifikátů v produkčním prostředí. Informace o konfiguraci protokolu TLS najdete v tématu Důležité informace o zabezpečení winHTTP.

Poznámka

Kontejnery aplikací a systémové služby od Windows 10 verze 1709, HTTP/2 (viz RFC7540) jsou ve výchozím nastavení zapnuté.

Služba Microsoft Windows HTTP Services (WinHTTP) poskytuje serverově podporované rozhraní vysoké úrovně pro internetové protokoly HTTP/2 a 1.1. WinHTTP je navržený tak, aby se používal především v serverových scénářích serverových aplikací, které komunikují se servery HTTP.

WinINet byla navržena jako klientská platforma HTTP pro interaktivní desktopové aplikace. WinINet zobrazí uživatelské rozhraní pro některé operace, jako je například shromažďování přihlašovacích údajů uživatele. WinHTTP ale zpracovává tyto operace prostřednictvím kódu programu. Serverové aplikace, které vyžadují klientské služby HTTP, by měly místo WinINet používat WinHTTP. Pro více informací viz Portování aplikací WinINet na WinHTTP.

WinHTTP je také navržený pro použití v systémových službách a klientských aplikacích založených na protokolu HTTP. Aplikace s jedním uživatelem, které vyžadují funkce protokolu FTP, trvalost souborů cookie, ukládání do mezipaměti, automatické zpracování dialogových oken přihlašovacích údajů, kompatibilitu Internet Exploreru nebo podporu nižší platformy by však měly zvážit použití WinINet.

Toto rozhraní je přístupné z C/C++ buď pomocí aplikačního programovacího rozhraní (API) WinHTTP, nebo pomocí rozhraní IWinHttpRequest a IWinHttpRequestEvents rozhraní. WinHTTP je také přístupný ze skriptu a jazyka Microsoft Visual Basic prostřednictvím objektu WinHTTP. Další informace a popisy jednotlivých funkcí najdete v referenčních informacích k funkcím WinHTTP pro konkrétní jazyk.

Počínaje Windows 8 poskytuje WinHTTP rozhraní API pro umožnění připojení pomocí protokolu WebSocketl, například WinHttpWebSocketSend a WinHttpWebSocketReceive.

Opatrnost

WinHTTP není znovuvstupný, s výjimkou během zpětného volání při asynchronním dokončení. To znamená, že zatímco vlákno má volání čekající na jednu z funkcí WinHTTP, jako je WinHttpSendRequest, WinHttpReceiveResponse, WinHttpQueryDataAvailable, WinHttpSendData nebo WinHttpWriteData, nesmí nikdy volat WinHTTP podruhé, dokud se první volání nedokončí. Jedním ze scénářů, ve kterém může dojít k druhému volání, je následující: Pokud aplikace zařadí asynchronní procedurální volání (APC) do vlákna, které volá do WinHTTP, a pokud WinHTTP provede interně čekání s možností upozornění, může se APC spustit. Pokud rutina APC také volá WinHTTP, znovu vstoupí do rozhraní WinHTTP API a může dojít k poškození vnitřního stavu WinHTTP.

Funkce WinHTTP 5.1

Ve verzi 5.1 winHTTP byly přidány následující funkce:

  • Podpora protokolu IPv6
  • Možnosti AutoProxy.
  • Protokol HTTP/1.0, včetně podpory udržování spojení a relačních cookies.
  • Podpora přenosu dat metodou chunked HTTP/1.1 pro odpovědi HTTP.
  • Udržování sdružování anonymních připojení mezi relacemi
  • Funkce SSL (Secure Sockets Layer), včetně klientských certifikátů. Mezi podporované protokoly SSL patří: SSL 2.0, SSL 3.0 a TLS (Transport Layer Security) 1.0.
  • Podpora ověřování serveru a proxy serveru, včetně integrované podpory pro Microsoft Passport 1.4 a balíček Negotiate/Kerberos.
  • Automatické zpracování přesměrování, pokud není potlačeno.
  • Skriptovatelné rozhraní kromě rozhraní API.
  • Utilita trasování, která pomáhá při řešení problémů.

WinHTTP nepodporuje celou řadu funkcí winINet, včetně ukládání adres URL do mezipaměti a trvalých souborů cookie, automatického generování, podpory offline a protokolu FTP (File Transfer Protocol).

Další informace o změnách zavedených ve verzi 5.1 najdete v tématu Co je nového v systému WinHTTP 5.1.

Začínáme s WinHTTP

Další informace o službě WinHTTP najdete v následujících tématech.