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 |
程式庫 | Httpapi.lib |
Dll | Httpapi.dll |