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.
À quelques exceptions près, WinINet est un super-ensemble de WinHTTP. Lorsque vous devez choisir entre les deux, vous devez utiliser WinINet sauf si vous prévoyez une exécution dans un service ou un processus de type service nécessitant l’emprunt d’identité et l’isolation des sessions.
Comparaison des fonctionnalités
| Caractéristique | WinINet | WinHTTP |
|---|---|---|
| cache d’identifiants. Permet à toutes les applications intégrées dans Windows Internet Explorer d’obtenir automatiquement les informations d’identification. Il permet également à une application s’exécutant en dehors d’Internet Explorer d’inviter/de spécifier les informations d’identification du serveur une seule fois. À partir de là, les demandes sont automatiques. | oui | Non |
| Demande d’informations d’identification. Fournit une API qui permet au code appelant d’inviter l’utilisateur à entrer des informations d’identification. | oui | Non |
| FTP | oui | Non |
| Prise en charge automatique/RAS. Il s’agit de fonctionnalités héritées. Utilisez Accès à distance à la place. | oui | Non |
| Zones. Intégration automatique à des zones de sécurité Internet Explorer. | oui | Non |
| prise en charge de l’IDNA. Prise en charge intégrée de la norme RFC IDNA/Punycode. | oui | oui |
| API Cookie Jar. Les cookies persistants et non persistants sont pris en charge. Toute application ou script peut l’utiliser pour afficher les mêmes cookies que le navigateur. | oui | Non |
| Prise en charge du mode protégé d’Internet Explorer | oui | Non |
| prise en charge de la décompression. Prise en charge des formats de compression gzip et deflate. | oui | oui |
| Prise en charge du téléversement par blocs. Le code client doit effectuer la segmentation. | Non | oui |
| Prise en charge de SOCKS4 (version 4 de SOCKS). N’inclut pas v4a. | oui | Non |
| Prise en charge de SOCKS5 (SOCKS version 5) | Non | Non |
| Envoi et réception bidirectionnels | Non | Non |
| E/S superposées | Non | Non |
| Prise en charge du schéma de fichier. Utile pour les scripts proxy avec un schéma de fichiers. | oui | Non |
| InternetOpenUrl. Code simplifié pour ouvrir une URL. | oui | Non |
| Prise en charge des services. Peut être exécuté à partir d’un service ou d’un compte de service. | Non | oui |
| Isolation de session. Les sessions distinctes n’ont pas d’impact les unes sur les autres. | Non | oui |
| Usurpation d’identité. Prend en charge l’appel alors qu’un thread usurpe l’identité d’un autre utilisateur. | Non | oui |
Rubriques connexes
- WinINet
- WinHTTP
Guide de décision rapide
Utilisez cet organigramme pour sélectionner la pile de client HTTP appropriée :
-
Votre code s’exécute-t-il dans un service Windows, un processus système ou sous emprunt d’identité ?
- Oui → Utiliser WinHTTP.
-
Votre code est-il une application de bureau qui nécessite les paramètres de proxy des Options Internet (Internet Explorer) de l’utilisateur, des cookies ou des invites d’authentification ?
- Oui → Utiliser WinINet.
-
Écrivez-vous une application de bureau C++ moderne ou UWP/WinUI ?
- Oui → Utiliser Windows.Web.Http (C++/WinRT via l’namespace Windows.Web.Http).
-
Écrivez-vous une application .NET ?
- Oui → utiliser System.Net.Http.HttpClient.
-
Avez-vous besoin d’une compatibilité multiplateforme ?
- Oui → Utiliser libcurl ou une bibliothèque portable similaire.
Note
Quand utiliser ni WinINet ni WinHTTP : si vous créez une nouvelle application et que vous n’avez pas besoin d’une intégration Win32 héritée, préférez les alternatives modernes répertoriées ci-dessus. Ils offrent des API plus simples et une meilleure prise en charge asynchrone. Certaines alternatives offrent également des avantages supplémentaires : libcurl et .NET HttpClient sont multiplateformes ; La disponibilité de TLS 1.3 dépend de la pile TLS sous-jacente et de la configuration du système d’exploitation. Réservez WinHTTP/WinINet pour les scénarios qui nécessitent spécifiquement la prise en charge du service Win32, le partage d’informations d’identification du navigateur ou l’intégration de proxy profond.
Important
Rappel de sécurité : quelle que soit la pile HTTP que vous choisissez, ne désactivez jamais la validation de certificat TLS en production. WinHTTP et WinINet permettent d’ignorer les erreurs de certificat via des indicateurs, mais cela expose votre application à des attaques man-in-the-middle.