Acerca de WinHTTP

Nota

En el caso de los contenedores de aplicaciones y los servicios del sistema desde Windows 10, versión 1709, HTTP/2 (consulte RFC7540) está activado de forma predeterminada.

Los servicios HTTP de Microsoft Windows (WinHTTP) proporcionan una interfaz de alto nivel compatible con el servidor a los protocolos http/2 y 1.1 de Internet. WinHTTP está diseñado para usarse principalmente en escenarios basados en servidor mediante aplicaciones de servidor que se comunican con servidores HTTP.

WinINet se diseñó como una plataforma cliente HTTP para aplicaciones de escritorio interactivas. WinINet muestra una interfaz de usuario para algunas operaciones, como recopilar credenciales de usuario. Sin embargo, WinHTTP controla estas operaciones mediante programación. Las aplicaciones de servidor que requieren servicios de cliente HTTP deben usar WinHTTP en lugar de WinINet. Para obtener más información, consulte Migración de aplicaciones WinINet a WinHTTP.

WinHTTP también está diseñado para su uso en servicios del sistema y aplicaciones cliente basadas en HTTP. Sin embargo, las aplicaciones de usuario único que requieren funcionalidad del protocolo FTP, persistencia de cookies, almacenamiento en caché, control automático de cuadros de diálogo de credenciales, compatibilidad de Internet Explorer o compatibilidad con la plataforma de nivel inferior deben considerar la posibilidad de usar WinINet.

Esta interfaz es accesible desde C/C++ mediante la interfaz de programación de aplicaciones (API) WinHTTP o mediante las interfaces IWinHttpRequest e IWinHttpRequestEvents . WinHTTP también es accesible desde script y Microsoft Visual Basic a través del objeto WinHTTP. Para obtener más información y descripciones de las funciones individuales, consulte la referencia de funciones WinHTTP para el lenguaje específico.

A partir de Windows 8, WinHTTP proporciona API para habilitar conexiones mediante el protocolo WebSocketl, como WinHttpWebSocketSend y WinHttpWebSocketReceive.

Precaución

WinHTTP no es reentrant excepto durante la devolución de llamada de finalización asincrónica. Es decir, mientras que un subproceso tiene una llamada pendiente a una de las funciones WinHTTP, como WinHttpSendRequest, WinHttpReceiveResponse, WinHttpQueryDataAvailable, WinHttpSendData o WinHttpWriteData, nunca debe llamar a WinHTTP una segunda vez hasta que se haya completado la primera llamada. Un escenario en el que se podría producir una segunda llamada es el siguiente: si una aplicación pone en cola una llamada de procedimiento asincrónico (APC) al subproceso que llama a WinHTTP y, si WinHTTP realiza una espera de alerta internamente, el APC se puede ejecutar. Si la rutina de APC también se llama a WinHTTP, vuelve a escribir la API winHTTP y el estado interno de WinHTTP se puede dañar.

Características de WinHTTP 5.1

Las siguientes características se agregaron en la versión 5.1 de WinHTTP:

  • Compatibilidad con IPv6.
  • Funcionalidades de AutoProxy.
  • Protocolo HTTP/1.0, incluida la compatibilidad con conexiones keep-alive (persistentes) y cookies de sesión.
  • Compatibilidad con transferencia fragmentada HTTP/1.1 para respuestas HTTP.
  • Agrupación persistente de conexiones anónimas entre sesiones.
  • Funcionalidad de Capa de sockets seguros (SSL), incluidos los certificados de cliente. Los protocolos SSL admitidos incluyen lo siguiente: SSL 2.0, SSL 3.0 y Seguridad de la capa de transporte (TLS) 1.0.
  • Compatibilidad con la autenticación de servidor y proxy, incluida la compatibilidad integrada con Microsoft Passport 1.4 y el paquete Negotiate/ Kerberos .
  • Control automático de redirecciones a menos que se suprima.
  • Interfaz que admite scripts además de la API.
  • Utilidad de seguimiento para ayudar a solucionar problemas.

No se admiten varias características de WinINet en WinHTTP, incluido el almacenamiento en caché de direcciones URL y las cookies persistentes, autoproxy, autodialing, compatibilidad sin conexión y protocolo de transferencia de archivos (FTP).

Para obtener más información sobre los cambios introducidos en la versión 5.1, vea Novedades de WinHTTP 5.1.

Introducción con WinHTTP

Para obtener más información sobre WinHTTP, consulte los temas siguientes.