Share via


Compatibilidad con IP versión 6

A partir de IE7 y versiones posteriores, WinINet admite literales IPv6 en el nombre de host y el componente de autoridad del URI. WinINet también admite el uso de literales IPv6 en partes relevantes del protocolo HTTP, como en el encabezado Location.

Componentes de literales y URI de nombre de host IPv6

WinINet implementa literales IPv6 según las especificaciones de RFC 3513. Como se especifica en esta RFC, los literales IPv6 de un URI deben incluirse entre corchetes. Por ejemplo, https://[::1]/ es un URI IPv6 válido; el formulario sin corchetes (https://::1/) no es válido. Sin embargo, no es necesario incluir entre corchetes los literales IPv6 de nombre de host que no forman parte del URI; cualquiera de los formularios es aceptable para WinINet. Por ejemplo, tanto "::1" como "[::1]" son formas aceptables de literales de nombre de host IPv6. Otras API, como la API de WinSock, también aceptarán ambos formularios. Por lo tanto, las aplicaciones deben estar preparadas para controlar ambas formas de literales de nombre de host IPv6.

El identificador de ámbito

La dirección literal IPv6 del URI puede incluir un identificador de ámbito. Un identificador de ámbito puede ser un identificador de interfaz como [FE80::1%1]. El estándar URI, documentado en RFC 3986, no define la sintaxis del identificador de ámbito y el URI se considera no uniforme cuando el identificador de ámbito está presente. Sin embargo, WinINet acepta un identificador de ámbito en el componente de autoridad del URI y en el literal IPv6 del nombre de host.

El carácter de porcentaje (%) de la dirección literal IPv6 debe tener un carácter de escape por porcentaje cuando esté presente en el URI. Por ejemplo, el identificador de ámbito FE80::2%3 debe aparecer en el URI como "https://[FE80::2%253]/", donde %25 es el carácter de porcentaje codificado hexadecimal (%). Si la aplicación recupera el URI de una API Unicode, como winsock WSAAddressToString API, la aplicación debe agregar la versión de escape del carácter de porcentaje (%) en el nombre de host del URI. Para crear la versión con escape del URI, las aplicaciones llaman a InternetCreateUrl con el parámetro dwFlags establecido en ICU_ESCAPE_AUTHORITY y el nombre de host IPv6 especificado en la estructura de componentes de dirección URL especificada en el parámetro lpUrlComponents .

Para todas las operaciones de sockets, WinINet usa el identificador de ámbito. Sin embargo, dado que el identificador de ámbito solo tiene importancia de host local, no se envía como parte de los encabezados del protocolo HTTP en la solicitud. Por ejemplo, se llama a la llamada a InternetOpenUrl con la siguiente dirección URL en el parámetro lpszUrl .

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

WinINet quita la parte del identificador de ámbito de la dirección URL cuando se envía la solicitud HTTP para esta dirección URL. La solicitud contiene los encabezados siguientes:

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

Nota:

WinINet no admite implementaciones de servidor. Además, no se debe usar desde un servicio. En el caso de las implementaciones de servidor o los servicios, use Servicios HTTP de Microsoft Windows (WinHTTP).