Prise en charge d’IP version 6
À compter d’IE7 et versions ultérieures, WinINet prend en charge les littéraux IPv6 dans le nom d’hôte et le composant d’autorité de l’URI. WinINet prend également en charge l’utilisation de littéraux IPv6 dans les parties pertinentes du protocole HTTP, comme dans l’en-tête Location.
Littéraux IPv6 et composants d’URI de nom d’hôte
WinINet implémente les littéraux IPv6 conformément aux spécifications de RFC 3513. Comme spécifié dans cette RFC, les littéraux IPv6 dans un URI doivent être placés entre crochets. Par exemple, https://[::1]/ est un URI IPv6 valide ; le formulaire sans crochets (https://::1/) n’est pas valide. Toutefois, les littéraux IPv6 de nom d’hôte qui ne font pas partie de l’URI n’ont pas besoin d’être placés entre crochets ; l’une ou l’autre des formes est acceptable pour WinINet. Par exemple, « ::1 » et « [::1] » sont des formes acceptables de littéraux de nom d’hôte IPv6. D’autres API, telles que l’API WinSock, acceptent également les deux formulaires. Par conséquent, les applications doivent être prêtes à gérer les deux formes de littéraux de nom d’hôte IPv6.
ID d’étendue
L’adresse littérale IPv6 dans l’URI peut inclure un ID d’étendue. Un ID d’étendue peut être un ID d’interface tel que [FE80::1%1]. La norme d’URI, documentée dans RFC 3986, ne définit pas la syntaxe de l’ID d’étendue, et l’URI est considéré comme non uniforme lorsque l’ID d’étendue est présent. Toutefois, WinINet accepte un ID d’étendue dans le composant d’autorité de l’URI et dans le littéral IPv6 du nom d’hôte.
Le caractère de pourcentage (%) dans l’adresse littérale IPv6 doit être placé dans une séquence d’échappement de pourcentage lorsqu’il est présent dans l’URI. Par exemple, l’ID d’étendue FE80::2%3 doit apparaître dans l’URI sous la forme « https://[FE80::2%253]/ », où %25 est le caractère de pourcentage codé en hexadécimal (%). Si l’application récupère l’URI à partir d’une API Unicode, telle que l’API Winsock WSAAddressToString , l’application doit ajouter la version d’échappement du caractère de pourcentage (%) dans le nom d’hôte de l’URI. Pour créer la version d’échappement de l’URI, les applications appellent InternetCreateUrl avec le paramètre dwFlags défini sur ICU_ESCAPE_AUTHORITY et le nom d’hôte IPv6 spécifié dans la structure des composants d’URL spécifiée dans le paramètre lpUrlComponents .
Pour toutes les opérations de sockets, WinINet utilise l’ID d’étendue. Toutefois, étant donné que l’ID d’étendue a uniquement la signification de l’hôte local, il n’est pas envoyé dans le cadre des en-têtes de protocole HTTP dans la requête. Par exemple, l’appel à InternetOpenUrl est appelé avec l’URL suivante dans le paramètre lpszUrl .
https://[fec0::2%251]:80/path.htm
La partie ID d’étendue de l’URL est supprimée par WinINet lorsque la requête HTTP est envoyée pour cette URL. La requête contient les en-têtes suivants :
GET path.htm HTTP/1.1
Host: [fec0::2]
Notes
WinINet ne prend pas en charge les implémentations de serveur. En outre, il ne doit pas être utilisé à partir d’un service. Pour les implémentations de serveur ou les services, utilisez Microsoft Windows HTTP Services (WinHTTP).