IP 第 6 版支援
從 IE7 和更新版本開始,WinINet 支援主機名稱中的 IPv6 常值,以及 URI 的授權元件。 WinINet 也支援在 HTTP 通訊協定的相關部分使用 IPv6 常值,例如在位置標頭中。
主機名稱 IPv6 常值和 URI 元件
WinINet 會根據 RFC 3513 中的規格實作 IPv6 常值。 如此 RFC 中所指定,URI 中的 IPv6 常值必須以括弧括住。 例如,HTTPs://[::1]/ 是有效的 IPv6 URI;沒有括弧的表單 (https://::1/) 無效。 不過,不屬於 URI 一部分的主機名稱 IPv6 常值不需要以括弧括住;WinINet 可接受任一表單。 例如,「::1」 和 「[::1]」 都是 IPv6 主機名稱常值可接受的形式。 其他 API,例如 WinSock API 也會接受這兩種形式。 因此,應用程式應該準備好處理這兩種形式的 IPv6 主機名稱常值。
範圍識別碼
URI 中的 IPv6 常值位址可能包含範圍識別碼。 範圍識別碼可以是介面識別碼,例如 [FE80::1%1]。 RFC 3986 中記載的 URI 標準不會定義範圍識別碼的語法,而且當範圍識別碼存在時,URI 會被視為非統一。 不過,WinINet 接受 URI 授權元件中的範圍識別碼,以及在主機名稱 IPv6 常值中。
IPv6 常值位址中的百分比字元 (%) 必須在 URI 中出現時逸出百分比。 例如,範圍識別碼 FE80::2%3 必須在 URI 中顯示為 「HTTPs://[FE80::2%253]/」,其中 %25 是十六進位編碼百分比字元 (%) 。 如果應用程式從 Unicode API 擷取 URI,例如 Winsock WSAAddressToString API,應用程式必須在 URI 的主機名稱中新增逸出版本的百分比字元 (%) 。 若要建立 URI 的逸出版本,應用程式會呼叫 InternetCreateUrl ,並將 dwFlags 參數設定為 ICU_ESCAPE_AUTHORITY,以及在 lpUrlComponents 參數中指定的 URL 元件結構中指定的 IPv6 主機名稱。
針對所有通訊端作業,WinINet 會使用範圍識別碼。 不過,因為範圍識別碼只有本機主機重要性,所以不會在要求中的 HTTP 通訊協定標頭中傳送。 例如,呼叫 InternetOpenUrl 時,會在 lpszUrl 參數中使用下列 URL 呼叫。
https://[fec0::2%251]:80/path.htm
當傳送此 URL 的 HTTP 要求時,WinINet 會移除 URL 的範圍識別碼部分。 要求包含下列標頭:
GET path.htm HTTP/1.1
Host: [fec0::2]
注意
WinINet 不支援伺服器實作。 此外,它不應該從服務使用。 對於伺服器實作或服務,請使用 Microsoft Windows HTTP 服務 (WinHTTP) 。