httpDeclarePush 函数 (http.h)
声明要用于 HTTP 服务器推送的资源到子资源关系。 如果基础协议、连接、客户端和策略允许推送操作,则 HTTP.sys 对给定资源执行 HTTP 2.0 服务器推送。
语法
HTTPAPI_LINKAGE ULONG HttpDeclarePush(
[in] HANDLE RequestQueueHandle,
[in] HTTP_REQUEST_ID RequestId,
[in] HTTP_VERB Verb,
[in] PCWSTR Path,
[in, optional] PCSTR Query,
[in, optional] PHTTP_REQUEST_HEADERS Headers
);
参数
[in] RequestQueueHandle
HttpCreateRequestQueue 函数返回的 HTTP.sys 请求队列的句柄。
[in] RequestId
声明推送操作的请求的不透明标识符。 请求必须来自指定的队列句柄。
[in] Verb
用于推送操作的 HTTP 谓词。 HTTP.sys 推送操作仅支持 HttpVerbGET 和 HttpVerbHEAD。
[in] Path
要推送的资源的 URL 的路径部分。
[in, optional] Query
要推送的资源的 URL 的查询部分。 此字符串不应包含前导问号 (?) 。
[in, optional] Headers
推送操作的请求标头。
不应提供主机标头,因为 HTTP.sys 自动生成正确的主机信息。 HTTP.sys 不支持跨域推送操作,因此 HTTP.sys 强制并生成与原始客户端发起的请求匹配的主机信息。
不允许推送请求具有实体正文,因此不能包含非零 Content-Length 标头或任何 Transfer-Encoding 标头。
返回值
如果函数成功,则返回 NO_ERROR。
如果函数失败,它将返回 WinError.h 中定义的 系统错误代码 。
注解
在发送任何会导致客户端发现子资源本身的响应字节之前,应调用 HttpDeclarePush 。 未能遵守此顺序会导致推送资源的服务器与检索资源的客户端之间发生争用,从而浪费带宽。 服务器应用程序应仅使用 HttpDeclarePush 来推送服务器应用程序需要且客户端尚未缓存的资源。 如果服务器应用程序推送其他资源,则可能不必要地使用带宽和 CPU。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2016 [仅限桌面应用] |
目标平台 | Windows |
标头 | http.h |
Library | Httpapi.lib |
DLL | Httpapi.dll |