Partilhar via


Suporte a IP Versão 6

Começando com o IE7 e superior, WinINet suporta literais IPv6 no nome do host e o componente de autoridade do URI. WinINet também suporta o uso de literais IPv6 em partes relevantes do protocolo HTTP, como no cabeçalho Location.

Literais IPv6 de nome de host e componentes de URI

WinINet implementa literais IPv6 de acordo com as especificações em RFC 3513. Conforme especificado nesta RFC, os literais IPv6 em um URI devem ser colocados entre colchetes. Por exemplo, https://[::1]/ é um URI IPv6 válido; O formulário sem parênteses (https://::1/) não é válido. Os literais IPv6 de nome de 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. Assim, os aplicativos devem ser preparados para lidar com ambas as formas de literais de nome de host IPv6.

ID do escopo

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

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

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

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

A parte de 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

WinINet não suporta implementações de servidor. Além disso, não deve ser usado a partir de um serviço. Para implementações ou serviços de servidor, use Microsoft Windows HTTP Services (WinHTTP).