Supporto ip versione 6

A partire da IE7 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 del 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; la maschera senza parentesi quadre (https://::1/) non è valida. I valori letterali IPv6 host che non fanno parte dell'URI, tuttavia, non devono essere racchiusi tra parentesi; entrambe le forme 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. Le applicazioni devono quindi 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 del nome host.

Il carattere percentuale (%) nell'indirizzo letterale IPv6 deve essere preceduto da un carattere di escape percentuale 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 l'API Winsock WSAAddressToString , l'applicazione deve aggiungere la versione di escape del carattere di percentuale (%) nel nome host dell'URI. Per creare la versione con escape dell'URI, le applicazioni chiamano InternetCreateUrl con il parametro dwFlags impostato su ICU_ESCAPE_AUTHORITY e 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 la richiesta HTTP viene inviata 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 i servizi HTTP di Microsoft Windows (WinHTTP).