IP バージョン 6 のサポート

IE7 以降、WinINet はホスト名の IPv6 リテラルと URI の機関コンポーネントをサポートします。 WinINet では、Location ヘッダーなど、HTTP プロトコルの関連部分での IPv6 リテラルの使用もサポートされています。

ホスト名 IPv6 リテラルと URI コンポーネント

WinINet は、RFC 3513 の仕様に従って IPv6 リテラルを実装します。 この RFC で指定されているように、URI 内の IPv6 リテラルは角かっこで囲む必要があります。 たとえば、https://[::1]/ は有効な IPv6 URI です。角かっこのないフォーム (https://::1/) は無効です。 ただし、URI の一部ではないホスト名 IPv6 リテラルは、角かっこで囲む必要はありません。どちらのフォームも WinINet で使用できます。 たとえば、"::1" と "[::1]" の両方が、IPv6 ホスト名リテラルの許容される形式です。 WinSock API などの他の API も、両方のフォームを受け入れます。 したがって、両方の形式の IPv6 ホスト名リテラルを処理するようにアプリケーションを準備する必要があります。

スコープ ID

URI の IPv6 リテラル アドレスには、スコープ ID を含めることができます。 スコープ ID には、[FE80::1%1] などのインターフェイス ID を指定できます。 RFC 3986 に記載されている URI 標準では、スコープ ID の構文は定義されておらず、スコープ ID が存在する場合、URI は一様でないと見なされます。 ただし、WinINet は、URI の機関コンポーネントとホスト名 IPv6 リテラルでスコープ ID を受け入れます。

IPv6 リテラル アドレスのパーセント文字 (%) は、URI に存在する場合はパーセントエスケープする必要があります。 たとえば、スコープ ID FE80::2%3 は、URI に "https://[FE80::2%253]/" として表示する必要があります。ここで、%25 は 16 進エンコードされたパーセント文字 (%) です。 アプリケーションが Unicode API (Winsock WSAAddressToString API など) から URI を取得する場合、アプリケーションは URI のホスト名にパーセント文字 (%) のエスケープされたバージョンを追加する必要があります。 URI のエスケープされたバージョンを作成するために、アプリケーションは、dwFlags パラメーターを ICU_ESCAPE_AUTHORITY に設定し、lpUrlComponents パラメーターで指定された URL コンポーネント構造で指定された IPv6 ホスト名を使用して InternetCreateUrl を呼び出します。

すべてのソケット操作で、WinINet はスコープ ID を使用します。 ただし、スコープ ID にはローカル ホストの重要性しかないため、要求の HTTP プロトコル ヘッダーの一部として送信されません。 たとえば、 InternetOpenUrl の呼び出しは 、lpszUrl パラメーターで次の URL を使用して呼び出されます。

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

この URL に対して HTTP 要求が送信されると、URL のスコープ ID 部分が WinINet によって削除されます。 要求には、次のヘッダーが含まれています。

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

Note

WinINet では、サーバーの実装はサポートされていません。 また、サービスから使用しないでください。 サーバーの実装またはサービスの場合は、 Microsoft Windows HTTP サービス (WinHTTP) を使用します。