Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Choix de la pile HTTP appropriée Windows
| Scénario | API recommandée |
|---|---|
| Windows service, démon ou code côté serveur | WinHTTP , conçu pour les services ; prend en charge l’emprunt d’identité, l’isolation de session |
| Application de bureau utilisant les paramètres de proxy d’Options Internet (IE), les cookies ou les invites d’authentification | WinINet : hérite automatiquement de la configuration des options Internet de l’utilisateur |
| Application C++ moderne (UWP ou Desktop) | Windows.Web.Http (C++/WinRT) — conçu d’abord pour l’asynchrone, avec prise en charge moderne de TLS |
| Application .NET | System.Net.Http.HttpClient — connexions gérées, multiplateformes, mises en pool |
| Multiplateforme C/C++ | libcurl ou les bibliothèques HTTP de la plateforme — non spécifiques à Windows |
Principales différences par rapport à WinINet : WinHTTP ne partage pas les cookies, le cache ou les informations d’identification avec le navigateur de l’utilisateur. Il n’y a aucune invite de l’interface utilisateur. Il prend en charge l’exécution sous les comptes de service et l’emprunt d’identité. Consultez WinINet et WinHTTP pour obtenir une comparaison complète des fonctionnalités.
Note
Paramètres de sécurité par défaut : WinHTTP suit la configuration Schannel du système d’exploitation pour la négociation de version TLS. Validez toujours les certificats du serveur ; ne configurez jamais WINHTTP_OPTION_SECURITY_FLAGS de façon à ignorer les erreurs de certificat en production. Pour la configuration TLS, consultez Considérations relatives à la sécurité WinHTTP.
Note
Pour les conteneurs d’applications et les services système depuis Windows 10, la version 1709, HTTP/2 (voir RFC7540) est activée par défaut.
Microsoft Windows services HTTP (WinHTTP) vous fournit une interface de haut niveau prise en charge par le serveur pour les protocoles Internet HTTP/2 et 1.1. WinHTTP est conçu pour être utilisé principalement dans les scénarios basés sur le serveur par les applications serveur qui communiquent avec des serveurs HTTP.
WinINet a été conçu comme une plateforme cliente HTTP pour les applications de bureau interactives. WinINet affiche une interface utilisateur pour certaines opérations telles que la collecte des informations d’identification utilisateur. WinHTTP gère toutefois ces opérations par programmation. Les applications serveur qui nécessitent des services clients HTTP doivent utiliser WinHTTP au lieu de WinINet. Pour plus d’informations, consultez Portage d’applications WinINet vers WinHTTP.
WinHTTP est également conçu pour une utilisation dans les services système et les applications clientes basées sur HTTP. Toutefois, les applications mono-utilisateur qui nécessitent la fonctionnalité de protocole FTP, la persistance des cookies, la mise en cache, la gestion automatique des dialogues d’informations d’identification, la compatibilité Internet Explorer ou la prise en charge de la plateforme de bas niveau doivent envisager d’utiliser WinINet.
Cette interface est accessible à partir de C/C++ à l’aide de l’interface de programmation d’applications WinHTTP (API) ou à l’aide des interfaces IWinHttpRequest et IWinHttpRequestEvents . WinHTTP est également accessible à partir du script et Microsoft Visual Basic via l’objet WinHTTP. Pour plus d’informations et de descriptions des fonctions individuelles, consultez la référence des fonctions WinHTTP pour le langage spécifique.
À compter de Windows 8, WinHTTP fournit des API pour activer les connexions à l’aide du protocole WebSocketl, comme WinHttpWebSocketSend et WinHttpWebSocketReceive.
Caution
WinHTTP n’est pas réentrant, sauf pendant le rappel d’achèvement asynchrone. Autrement dit, si un thread a un appel en attente à l’une des fonctions WinHTTP telles que WinHttpSendRequest, WinHttpReceiveResponse, WinHttpQueryDataAvailable, WinHttpSendData ou WinHttpWriteData, il ne doit jamais appeler WinHTTP une seconde fois jusqu’à ce que le premier appel soit terminé. Un scénario dans lequel un deuxième appel peut se produire est le suivant : si une application met en file d’attente un appel de procédure asynchrone (APC) vers le thread qui appelle WinHTTP et si WinHTTP effectue une attente alertable en interne, l’APC peut s’exécuter. Si la routine APC en vient également à appeler WinHTTP, elle réentre dans l’API WinHTTP, et l’état interne de WinHTTP peut être corrompu.
Fonctionnalités WinHTTP 5.1
Les fonctionnalités suivantes ont été ajoutées dans la version 5.1 de WinHTTP :
- Prise en charge de l'IPv6.
- Fonctionnalités AutoProxy.
- Protocole HTTP/1.0, y compris la prise en charge des connexions persistantes (keep-alive) et des cookies de session.
- Prise en charge du transfert par morceaux HTTP/1.1 pour les réponses HTTP.
- Regroupement continu des connexions anonymes entre les sessions.
- Fonctionnalité SSL (Secure Sockets Layer), y compris les certificats clients. Les protocoles SSL pris en charge sont les suivants : SSL 2.0, SSL 3.0 et TLS (Transport Layer Security) 1.0.
- Prise en charge de l’authentification serveur et proxy, y compris la prise en charge intégrée de Microsoft Passport 1.4 et du package Negotiate/Kerberos.
- Gestion automatique des redirections, sauf si elle est supprimée.
- Interface scriptable en plus de l’API.
- Utilitaire de suivi pour résoudre les problèmes.
Un certain nombre de fonctionnalités WinINet ne sont pas prises en charge dans WinHTTP, notamment la mise en cache d’URL et les cookies persistants, l’autoproxy, l’autodialing, la prise en charge hors connexion et le protocole FTP (File Transfer Protocol).
Pour plus d’informations sur les modifications introduites dans la version 5.1, consultez Nouveautés de WinHTTP 5.1.
Prise en main de WinHTTP
Pour plus d’informations sur WinHTTP, consultez les rubriques suivantes.
- WinINet et WinHTTP compare les deux technologies pour accéder à HTTP.
- WinHTTP Versions décrit l’historique des versions de WinHTTP.
- Nouveautés de WinHTTP 5.1 décrit les modifications et les nouvelles fonctionnalités de WinHTTP 5.1.
- La terminologie du réseau décrit les concepts et la terminologie utiles relatifs à la mise en réseau en général et au protocole HTTP en particulier.
- Le choix d’une interface WinHTTP décrit l’API C/C++ et l’interface COM pour WinHTTP.
- Les considérations relatives à la sécurité WinHTTP décrivent les problèmes de sécurité à prendre en compte lors de l’utilisation de WinHTTP.
- Le portage d’applications WinINet vers WinHTTP décrit comment modifier vos applications WinINet existantes pour utiliser l’API WinHTTP.