Windows Server 2008 和 Windows Vista 中的新增功能
从 Windows Server 2008 和 Windows Vista 开始,WinHTTP API 已得到增强,包括以下功能。
大于 4 GB 上传。
WinHttpSendRequest 由于 DWORD 总长度参数的大小限制,只能发送 4 GB 的数据。 为了使应用程序能够发送超过 4 GB 的数据,会将 Content-Length 标头添加到请求中,以指定大小为 LARGE_INTEGER (2^64 字节) 的数据。 有关详细信息,请参阅 WinHttpSendRequest。 IWinHttpRequest COM 对象不支持此功能。
Transfer-Encoding标头
Transfer-Encoding标头使应用程序能够将分块数据发送到服务器。 当请求上存在Transfer-Encoding标头时,应用程序会在调用 WinHttpSendRequest 时发送长度为零的实体正文的请求。 实体正文在对 WinHttpWriteData 的后续调用中发送。 IWinHttpRequest COM 对象不支持此功能。
SSL 客户端证书颁发者列表检索
当 WinHttpSendRequest 失败并 出现ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED时,应用程序可以检索 SSL 客户端证书颁发者列表。 WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST的新选项允许应用程序检索证书颁发者列表并筛选该列表以获取最佳证书。 有关详细信息,请参阅 SSL 客户端身份验证 的选项标志 和 颁发者列表检索 主题。 IWinHttpRequest COM 对象不支持此功能。
可选客户端证书
当 WinHttpSendRequest 失败并 ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED时,服务器可能不需要 SSL 客户端证书。 服务器可以还原另一种形式的身份验证,或允许客户端继续进行匿名访问。 应用程序设置 WINHTTP_OPTION_CLIENT_CERT_CONTEXT 选项,并指定 WinHttp 用于确定是否需要客户端证书的宏。 有关详细信息,请参阅 选项标志。 IWinHttpRequest COM 对象不支持此功能。
源和目标 IP 地址
WinHttpReceiveResponse 完成后,应用程序可以检索生成响应的请求的源和目标 IP 地址和端口。 设置 “WINHTTP_OPTION_CONNECTION_INFO ”选项时,将提供一个新结构来接收源地址和目标地址。 有关详细信息,请参阅 选项标志。 IWinHttpRequest COM 对象不支持此功能。
其他 SSL 客户端身份验证错误
其他 SSL 客户端身份验证错误提供有关 SSL 客户端证书的详细信息。 ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY 和 ERROR_WINHTTP_CERT_NO_ACCESS_PRIVATE_KEY 客户端证书错误是 Windows Server 2008 和 Windows Vista 的新增功能。 IWinHttpRequest COM 对象在 HRESULT 中返回这些错误。