Udostępnij za pośrednictwem


Obsługa adresu IP w wersji 6

Począwszy od wersji IE7 lub nowszej, usługa WinINet obsługuje literały IPv6 w nazwie hosta i składnik urzędu identyfikatora URI. Usługa WinINet obsługuje również używanie literałów IPv6 w odpowiednich częściach protokołu HTTP, takich jak w nagłówku Location.

Literały IPv6 nazwy hosta i składniki identyfikatora URI

WinINet implementuje literały IPv6 zgodnie ze specyfikacjami w specyfikacji RFC 3513. Jak określono w tym RFC, literały IPv6 w identyfikatorze URI muszą być ujęte w nawiasy. Na przykład https://[:1]/ jest prawidłowym identyfikatorem URI protokołu IPv6; formularz bez nawiasów (https://::1/) jest nieprawidłowy. Literały IPv6 nazwy hosta, które nie są częścią identyfikatora URI, nie muszą być jednak ujęte w nawiasy kwadratowe; dowolny formularz jest akceptowalny dla sieci WinINet. Na przykład zarówno "::1" jak i "[::1]" są akceptowalnymi formami literałów nazwy hosta IPv6. Inne interfejsy API, takie jak interfejs API Środowiska WinSock, będą również akceptować obie formularze. W związku z tym aplikacje powinny być przygotowane do obsługi obu form literałów nazwy hosta IPv6.

Identyfikator zakresu

Adres literału IPv6 w identyfikatorze URI może zawierać identyfikator zakresu. Identyfikator zakresu może być identyfikatorem interfejsu, takim jak [FE80::1%1]. Standard identyfikatora URI, udokumentowany w dokumencie RFC 3986, nie definiuje składni identyfikatora zakresu, a identyfikator URI jest uznawany za nieumundurowany, gdy identyfikator zakresu jest obecny. Jednak winINet akceptuje identyfikator zakresu w składniku urzędu identyfikatora URI i w literału IPv6 nazwy hosta.

Znak procentu (%) w adresie literału IPv6 musi być procentem ucieczki w przypadku obecności w identyfikatorze URI. Na przykład identyfikator zakresu FE80::2%3musi pojawić się w identyfikatorze URI jako "https://[FE80::2%253]/", gdzie %25 jest zakodowanym znakiem procentu szesnastkowym (%). Jeśli aplikacja pobiera identyfikator URI z interfejsu API Unicode, takiego jak winsock WSAAddressToString API, aplikacja musi dodać unikniętą wersję znaku procentu (%) w nazwie hosta identyfikatora URI. Aby utworzyć wersję unikniętą identyfikatora URI, aplikacje wywołają InternetCreateUrl z parametrem dwFlags ustawionym na ICU_ESCAPE_AUTHORITY, a nazwa hosta IPv6 określona w strukturze składników adresu URL określonej w parametrze lpUrlComponents.

W przypadku wszystkich operacji gniazd winINet używa identyfikatora zakresu. Jednak ponieważ identyfikator zakresu ma tylko znaczenie hosta lokalnego, nie jest wysyłany jako część nagłówków protokołu HTTP w żądaniu. Na przykład wywołanie InternetOpenUrl jest wywoływane przy użyciu następującego adresu URL w parametrze lpszUrl.

https://[fec0::2%251]:80/path.htm

Część adresu URL identyfikatora zakresu jest usuwana przez usługę WinINet, gdy żądanie HTTP jest wysyłane dla tego adresu URL. Żądanie zawiera następujące nagłówki:

GET path.htm HTTP/1.1
Host: [fec0::2]

Nuta

Usługa WinINet nie obsługuje implementacji serwera. Ponadto nie należy jej używać z usługi. W przypadku implementacji serwera lub usług należy użyć usług HTTP systemu Microsoft Windows (WinHTTP).