Partager via


Prise en charge 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 des parties pertinentes du protocole HTTP, comme dans l’en-tête Location.

Littéraux IPv6 de nom d’hôte et composants d’URI

WinINet implémente des littéraux IPv6 en fonction des spécifications de RFC 3513. Comme spécifié dans cette RFC, les littéraux IPv6 d’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. Les littéraux IPv6 du nom d’hôte qui ne font pas partie de l’URI n’ont toutefois pas besoin d’être placés entre crochets ; l’un ou l’autre formulaire 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 pourcentage (%) dans l’adresse littérale IPv6 doit être placé en pourcentage d’échappement 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 winsock l’API WSAAddressToString, l’application doit ajouter la version d’échappement du caractère 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é 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 n’a que l’importance 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]

Note

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).