Сведения о WinHTTP

Примечание

Для контейнеров приложений и системных служб с Windows 10 версии 1709 http/2 (см. RFC7540) включен по умолчанию.

Службы HTTP Microsoft Windows (WinHTTP) предоставляют поддерживаемый сервером высокоуровневый интерфейс для протоколов HTTP/2 и 1.1 Internet. WinHTTP предназначен для использования в основном в серверных сценариях серверными приложениями, взаимодействующими с HTTP-серверами.

WinINet был разработан в качестве клиентской платформы HTTP для интерактивных классических приложений. WinINet отображает пользовательский интерфейс для некоторых операций, таких как сбор учетных данных пользователя. Однако WinHTTP обрабатывает эти операции программным способом. Серверные приложения, которым требуются службы клиентов HTTP, должны использовать WinHTTP вместо WinINet. Дополнительные сведения см. в статье Перенос приложений WinINet в WinHTTP.

WinHTTP также предназначен для использования в системных службах и клиентских приложениях на основе HTTP. Однако однопользовательским приложениям, которым требуется функциональность протокола FTP, сохраняемость файлов cookie, кэширование, автоматическая обработка диалоговых окон учетных данных, совместимость с Интернетом Обозреватель или поддержка платформ нижнего уровня, следует рассмотреть возможность использования WinINet.

Этот интерфейс доступен из C/C++ с помощью интерфейса программирования приложений WinHTTP или интерфейсов IWinHttpRequest и IWinHttpRequestEvents . WinHTTP также доступен из скрипта и Microsoft Visual Basic через объект WinHTTP. Дополнительные сведения и описания отдельных функций см. в справочнике по функциям WinHTTP для конкретного языка.

Начиная с Windows 8, WinHTTP предоставляет API для включения подключений по протоколу WebSocketl, например WinHttpWebSocketSend и WinHttpWebSocketReceive.

Внимание!

WinHTTP не используется повторно, за исключением обратного вызова асинхронного завершения. То есть, хотя поток имеет ожидающий вызова одной из функций WinHTTP, таких как WinHttpSendRequest, WinHttpReceiveResponse, WinHttpQueryDataAvailable, WinHttpSendData или WinHttpWriteData, он никогда не должен вызывать WinHTTP второй раз, пока не завершится первый вызов. Один из сценариев, в котором может произойти второй вызов, выглядит следующим образом: если приложение помещает в очередь асинхронный вызов процедур (APC) в поток, вызывающий WinHTTP, и если WinHTTP выполняет внутреннее ожидание с оповещениями, APC может запуститься. Если подпрограмма APC также вызывает WinHTTP, она повторно включает API WinHTTP, и внутреннее состояние WinHTTP может быть повреждено.

Функции WinHTTP 5.1

В версии 5.1 WinHTTP были добавлены следующие функции:

  • Поддержка IPv6.
  • Возможности AutoProxy.
  • Протокол HTTP/1.0, включая поддержку постоянных подключений и файлов cookie сеанса.
  • Поддержка фрагментированного переноса HTTP/1.1 для HTTP-ответов.
  • Поддержание активности пула анонимных подключений между сеансами.
  • Функции SSL, включая сертификаты клиента. Поддерживаются следующие протоколы SSL: SSL 2.0, SSL 3.0 и TLS 1.0.
  • Поддержка проверки подлинности сервера и прокси-сервера, включая встроенную поддержку Microsoft Passport 1.4 и пакета Negotiate/ Kerberos .
  • Автоматическая обработка перенаправлений, если они не подавляются.
  • Интерфейс, доступный для сценариев, в дополнение к API.
  • Служебная программа трассировки для устранения неполадок.

В WinHTTP не поддерживается ряд функций WinINet , включая кэширование URL-адресов и постоянные файлы cookie, автопрокси, автодиалинг, автономную поддержку и протокол FTP.

Дополнительные сведения об изменениях, внесенных в версию 5.1, см. в статье Новые возможности WinHTTP 5.1.

начало работы с WinHTTP

Дополнительные сведения о WinHTTP см. в следующих разделах.