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 プッシュ操作では 、HttpVerbGETHttpVerbHEAD のみがサポートされます。

[in] Path

プッシュされるリソースの URL のパス部分。

[in, optional] Query

プッシュされるリソースの URL のクエリ部分。 この文字列には、先頭の疑問符 (?) を含めてはいけません。

[in, optional] Headers

プッシュ操作の要求ヘッダー。

HTTP.sys は正しいホスト情報を自動的に生成するため、Host ヘッダーを指定しないでください。 HTTP.sys はクロスオリジン プッシュ操作をサポートしていないため、HTTP.sys は元のクライアントによって開始された要求に一致するホスト情報を強制して生成します。

プッシュ要求にはエンティティ本文を含めることはできません。そのため、0 以外の 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

こちらもご覧ください

HTTP_REQUEST_HEADERS

HTTP_VERB

HttpCreateRequestQueue