Supporto ip versione 6
A partire da Internet Explorer7 e versioni successive, WinINet supporta i valori letterali IPv6 nel nome host e il componente autorità dell'URI. WinINet supporta anche l'uso di valori letterali IPv6 in parti pertinenti del protocollo HTTP, ad esempio nell'intestazione Location.
Valori letterali e componenti URI di nome host IPv6
WinINet implementa i valori letterali IPv6 in base alle specifiche in RFC 3513. Come specificato in questo RFC, i valori letterali IPv6 in un URI devono essere racchiusi tra parentesi quadre. Ad esempio, https://[::1]/ è un URI IPv6 valido; il modulo senza parentesi quadre (https://::1/) non è valido. I valori letterali IPv6 nome host che non fanno parte dell'URI, tuttavia, non devono essere racchiusi tra parentesi quadre; entrambi i moduli sono accettabili per WinINet. Ad esempio, sia "::1" che "[::1]" sono forme accettabili di valori letterali nome host IPv6. Anche altre API, ad esempio l'API WinSock, accetteranno entrambi i moduli. Pertanto, le applicazioni devono essere preparate a gestire entrambe le forme di valori letterali nome host IPv6.
ID ambito
L'indirizzo letterale IPv6 nell'URI può includere un ID ambito. Un ID ambito può essere un ID interfaccia, ad esempio [FE80::1%1]. Lo standard URI, documentato in RFC 3986, non definisce la sintassi per l'ID ambito e l'URI viene considerato non uniforme quando è presente l'ID ambito. WinINet accetta tuttavia un ID ambito nel componente autorità dell'URI e nel valore letterale IPv6 nome host.
Il carattere percentuale (%) nell'indirizzo letterale IPv6 deve essere preceduto da un carattere di escape quando presente nell'URI. Ad esempio, l'ID ambito FE80::2%3, deve essere visualizzato nell'URI come "https://[FE80::2%253]/", dove %25 è il carattere percentuale con codifica esadecimale (%). Se l'applicazione recupera l'URI da un'API Unicode, ad esempio Winsock API WSAAddressToString, l'applicazione deve aggiungere la versione di escape del carattere di escape (%) nel nome host dell'URI. Per creare la versione di escape dell'URI, le applicazioni chiamano InternetCreateUrl con il parametro dwFlags impostato su ICU_ESCAPE_AUTHORITYe il nome host IPv6 specificato nella struttura dei componenti URL specificata nel parametro lpUrlComponents.
Per tutte le operazioni socket, WinINet usa l'ID ambito. Tuttavia, poiché l'ID ambito ha solo un significato host locale, non viene inviato come parte delle intestazioni del protocollo HTTP nella richiesta. Ad esempio, la chiamata a InternetOpenUrl viene chiamata con l'URL seguente nel parametro lpszUrl.
https://[fec0::2%251]:80/path.htm
La parte dell'ID ambito dell'URL viene rimossa da WinINet quando viene inviata la richiesta HTTP per questo URL. La richiesta contiene le intestazioni seguenti:
GET path.htm HTTP/1.1
Host: [fec0::2]
Nota
WinINet non supporta le implementazioni del server. Inoltre, non deve essere usato da un servizio. Per le implementazioni del server o i servizi, usare Servizi HTTP Di Microsoft Windows (WinHTTP).