Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
- WinINet vs. WinHTTP porovnává dvě technologie pro přístup k protokolu HTTP.
- Verze WinHTTP - popis historie verzí WinHTTP.
- Novinky ve WinHTTP 5.1 popisuje změny a nové funkce ve WinHTTP 5.1.
- terminologie sítě popisuje užitečné koncepty a terminologii týkající se sítí obecně a zejména protokolu HTTP.
- Volba rozhraní WinHTTP popisuje rozhraní C/C++ a rozhraní COM pro WinHTTP.
- Bezpečnostní úvahy WinHTTP popisují problémy se zabezpečením, na které byste měli být upozorněni při používání WinHTTP.
- portování aplikací WinINet do winHTTP popisuje, jak upravit stávající aplikace WinINet tak, aby používaly rozhraní API WinHTTP.