Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Elegir la pila HTTP de Windows adecuada
| Scenario | API recomendada |
|---|---|
| servicio de Windows, demonio o código del lado del servidor | WinHTTP : diseñado para servicios; admite la suplantación, el aislamiento de sesión |
| Aplicación de escritorio que necesita opciones de Internet (IE) configuración de proxy, cookies o solicitudes de credenciales | WinINet : hereda automáticamente la configuración de opciones de Internet del usuario. |
| Aplicación moderna de C++ (UWP o escritorio) | Windows.Web.Http (C++/WinRT) — moderno, con un enfoque asincrónico y compatibilidad con TLS moderno |
| Aplicación .NET | System.Net.Http.HttpClient : conexiones administradas, multiplataforma y agrupadas |
| C/C++ multiplataforma | libcurl o bibliotecas HTTP de la plataforma — no específicas de Windows |
Diferencias clave de WinINet: WinHTTP no comparte cookies, caché ni credenciales con el explorador del usuario. No muestra ningún mensaje en la interfaz de usuario. Sí admite la ejecución con cuentas de servicio y la suplantación de identidad. Consulta WinINet frente a WinHTTP para obtener una comparación completa de características.
Note
Valores predeterminados de seguridad : WinHTTP sigue la configuración de Schannel del sistema operativo para la negociación de la versión de TLS. Valide siempre los certificados del servidor; no configure nunca WINHTTP_OPTION_SECURITY_FLAGS para ignorar los errores de certificado en producción. Para la configuración de TLS, consulte Consideraciones de seguridad de WinHTTP.
Note
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.
Microsoft Windows servicios HTTP (WinHTTP) proporciona una interfaz de alto nivel compatible con el servidor a los protocolos de Internet HTTP/2 y 1.1. 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 . También se puede acceder a WinHTTP desde el 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 reentrante, 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 podría producirse una segunda llamada es el siguiente: si una aplicación encola una llamada de procedimiento asincrónica (APC) en el subproceso que llama a WinHTTP y WinHTTP realiza internamente una espera interrumpible, el APC puede ejecutarse. Si, además, la rutina APC llama a WinHTTP, vuelve a entrar en la API de WinHTTP, y el estado interno de WinHTTP puede corromperse.
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 activa de conexiones anónimas entre sesiones.
- Funcionalidad de la capa de sockets seguros (SSL), incluidos los certificados de cliente. Entre los protocolos SSL admitidos se incluyen los siguientes: 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.
- Gestión automática de redirecciones, salvo que se desactive.
- Interfaz scriptable 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, soporte técnico 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, consulte Novedades de WinHTTP 5.1.
Introducción a WinHTTP
Para obtener más información sobre WinHTTP, consulte los temas siguientes.
- WinINet frente a WinHTTP compara las dos tecnologías para acceder a HTTP.
- Versiones de WinHTTP describe el historial de versiones de WinHTTP.
- Novedades de WinHTTP 5.1 describe los cambios y las nuevas características de WinHTTP 5.1.
- La terminología de red describe conceptos y terminología útiles relacionados con las redes en general y el protocolo HTTP en particular.
- Elegir una interfaz WinHTTP describe la API de C/C++ y la interfaz COM para WinHTTP.
- Las consideraciones de seguridad de WinHTTP describen los problemas de seguridad que se deben tener en cuenta al usar WinHTTP.
- La migración de aplicaciones WinINet a WinHTTP describe cómo modificar las aplicaciones WinINet existentes para usar la API winHTTP.