Compartilhar via


Suporte ao IP versão 6

A partir do IE7 e superior, o WinINet dá suporte a literais IPv6 no nome do host e ao componente de autoridade do URI. O WinINet também dá suporte ao uso de literais IPv6 em partes relevantes do protocolo HTTP, como no cabeçalho Local.

Literais E componentes de URI do nome do host IPv6

O WinINet implementa literais IPv6 de acordo com as especificações no RFC 3513. Conforme especificado neste RFC, literais IPv6 em um URI devem ser colocados entre colchetes. Por exemplo, https://[::1]/ é um URI IPv6 válido; o formulário sem colchetes (https://::1/) não é válido. Os literais IPv6 do nome do host que não fazem parte do URI, no entanto, não precisam ser colocados entre colchetes; qualquer formulário é aceitável para WinINet. Por exemplo, "::1" e "[::1]" são formas aceitáveis de literais de nome de host IPv6. Outras APIs, como a API do WinSock, também aceitarão ambos os formulários. Portanto, os aplicativos devem estar preparados para lidar com ambas as formas de literais de nome de host IPv6.

ID de escopo

O endereço literal IPv6 no URI pode incluir uma ID de escopo. Uma ID de escopo pode ser uma ID de interface, como [FE80::1%1]. O padrão de URI, documentado no RFC 3986, não define a sintaxe para a ID de escopo e o URI é considerado não uniforme quando a ID de escopo está presente. No entanto, WinINet aceita uma ID de escopo no componente de autoridade do URI e no literal IPv6 do nome do host.

O caractere percentual (%) no endereço literal IPv6 deve ser percentual escapado quando presente no URI. Por exemplo, a ID de escopo FE80::2%3 deve aparecer no URI como "https://[FE80::2%253]/", em que %25 é o caractere de porcentagem codificado por hexadecisa (%). Se o aplicativo recuperar o URI de uma API Unicode, como a API Winsock WSAAddressToString , o aplicativo deverá adicionar a versão de escape do caractere percentual (%) no nome do host do URI. Para criar a versão de escape do URI, os aplicativos chamam InternetCreateUrl com o parâmetro dwFlags definido como ICU_ESCAPE_AUTHORITY e o nome do host IPv6 especificado na estrutura de componentes de URL especificada no parâmetro lpUrlComponents .

Para todas as operações de soquetes, WinINet usa a ID de escopo. No entanto, como a ID de escopo tem apenas significância de host local, ela não é enviada como parte dos cabeçalhos do protocolo HTTP na solicitação. Por exemplo, a chamada para InternetOpenUrl é chamada com a URL a seguir no parâmetro lpszUrl .

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

A parte da ID de escopo da URL é removida pelo WinINet quando a solicitação HTTP é enviada para essa URL. A solicitação contém os seguintes cabeçalhos:

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

Observação

O WinINet não dá suporte a implementações de servidor. Além disso, ele não deve ser usado de um serviço. Para implementações ou serviços de servidor, use Os Serviços HTTP do Microsoft Windows (WinHTTP).