Informacje o usłudze WinHTTP
Notatka
W przypadku kontenerów aplikacji i usług systemowych od systemu Windows 10 w wersji 1709 protokół HTTP/2 (zobacz RFC7540) jest domyślnie włączony.
Usługi HTTP systemu Microsoft Windows (WinHTTP) udostępniają obsługiwany przez serwer interfejs wysokiego poziomu do protokołów internetowych HTTP/2 i 1.1. WinHTTP jest przeznaczony do użycia głównie w scenariuszach opartych na serwerze przez aplikacje serwera komunikujące się z serwerami HTTP.
WinINet została zaprojektowana jako platforma kliencka HTTP dla interaktywnych aplikacji na komputery biurkowe. Usługa WinINet wyświetla interfejs użytkownika dla niektórych operacji, takich jak zbieranie poświadczeń użytkownika. WinHTTP obsługuje jednak te operacje programowo. Aplikacje serwera, które wymagają usług klienckich HTTP, powinny używać winHTTP zamiast WinINet. Aby uzyskać więcej informacji, zobacz Przenoszenie aplikacji WinINet do winHTTP.
WinHTTP jest również przeznaczony do użycia w usługach systemowych i aplikacjach klienckich opartych na protokole HTTP. Jednak aplikacje pojedynczego użytkownika, które wymagają funkcjonalności protokołu FTP, trwałości plików cookie, buforowania, automatycznej obsługi okien dialogowych, zgodności z programem Internet Explorer lub wsparcia dla starszych platform, powinny rozważyć użycie WinINet.
Ten interfejs jest dostępny z poziomu języków C/C++ przy użyciu interfejsu programowania aplikacji WinHTTP (API) lub interfejsów IWinHttpRequest i IWinHttpRequestEvents. WinHTTP jest również dostępny ze skryptu i programu Microsoft Visual Basic za pośrednictwem obiektu WinHTTP. Aby uzyskać więcej informacji i opisów poszczególnych funkcji, zobacz dokumentację funkcji WinHTTP dla określonego języka.
Począwszy od systemu Windows 8, WinHTTP udostępnia interfejsy API umożliwiające nawiązywanie połączeń przy użyciu protokołu WebSocketl, takich jak WinHttpWebSocketSend i WinHttpWebSocketReceive.
Ostrożność
WinHTTP nie jest reentrantny poza wywołaniem zwrotnym uzupełniania asynchronicznego. Oznacza to, że gdy wątek ma wywołanie oczekujące na jedną z funkcji WinHTTP, takich jak WinHttpSendRequest, WinHttpReceiveResponse, WinHttpQueryDataAvailable, WinHttpSendData lub WinHttpWriteData, nigdy nie może wywołać winHTTP po raz drugi, dopóki pierwsze wywołanie nie zostanie zakończone. Jednym ze scenariuszy, w których może wystąpić drugie wywołanie, jest następujące: jeśli aplikacja umieszcza w kolejce asynchroniczne wywołanie procedury (APC) do wątku, który wywołuje metodę WinHTTP, a jeśli winHTTP wykonuje oczekiwanie z możliwością alertu wewnętrznie, może zostać uruchomiona usługa APC. Jeśli rutynowa procedura APC również wywołuje WinHTTP, następuje ponowne wejście do interfejsu programistycznego WinHTTP, a wewnętrzny stan WinHTTP może zostać uszkodzony.
Funkcje winHTTP 5.1
W wersji 5.1 usługi WinHTTP dodano następujące funkcje:
- Obsługa protokołu IPv6.
- Możliwości autoproxy.
- Protokół HTTP/1.0, w tym obsługa trwałych połączeń (keep-alive) i ciasteczek sesji.
- Obsługa transferu fragmentowanego HTTP/1.1 dla odpowiedzi HTTP.
- Utrzymywanie aktywnych połączeń anonimowych w puli w trakcie sesji.
- Funkcje protokołu SSL (Secure Sockets Layer), w tym certyfikaty klienta. Obsługiwane protokoły SSL obejmują następujące elementy: SSL 2.0, SSL 3.0 i Transport Layer Security (TLS) 1.0.
- Obsługa uwierzytelniania serwera i serwera proxy, w tym zintegrowana obsługa usługi Microsoft Passport 1.4 i negocjacja/pakietu protokołu Kerberos.
- Automatyczna obsługa przekierowań, chyba że wyłączono.
- Interfejs skryptowy oprócz interfejsu API.
- Narzędzie do śledzenia ułatwia rozwiązywanie problemów.
Wiele funkcji WinINet nie jest obsługiwanych w usłudze WinHTTP, w tym buforowanie adresów URL i trwałe pliki cookie, autoproxy, autodialing, obsługa offline i protokół FTP.
Aby uzyskać więcej informacji na temat zmian wprowadzonych w wersji 5.1, zobacz Co nowego w systemie WinHTTP 5.1.
Wprowadzenie do usługi WinHTTP
Aby uzyskać więcej informacji na temat winHTTP, zobacz następujące tematy.
- WinINet a WinHTTP porównuje dwie technologie uzyskiwania dostępu do protokołu HTTP.
- WinHTTP Versions opisuje historię wersji WinHTTP.
- Co nowego w programie WinHTTP 5.1 opisuje zmiany i nowe funkcje w programie WinHTTP 5.1.
- terminologia sieciowa opisuje przydatne pojęcia i terminologię dotyczącą sieci w szczególności oraz protokołu HTTP.
- Wybieranie interfejsu WinHTTP opisuje interfejs API języka C/C++ i interfejs COM dla winHTTP.
- Zagadnienia dotyczące zabezpieczeń winHTTP opisuje problemy z zabezpieczeniami, które należy wziąć pod uwagę podczas korzystania z usługi WinHTTP.
- Przenoszenie aplikacji WinINet do WinHTTP opisuje sposób modyfikowania istniejących aplikacji WinINet w celu korzystania z interfejsu API WinHTTP.