Partager via


Fonction HttpDeclarePush (http.h)

Déclare une relation de ressource à sous-ressource à utiliser pour un push de serveur HTTP. HTTP.sys effectue ensuite un push serveur HTTP 2.0 pour la ressource donnée, si le protocole, la connexion, le client et les stratégies sous-jacents autorisent l’opération push.

Syntaxe

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
);

Paramètres

[in] RequestQueueHandle

Handle d’une HTTP.sys file d’attente de requêtes que la fonction HttpCreateRequestQueue a retournée.

[in] RequestId

Identificateur opaque de la demande qui déclare l’opération push. La demande doit provenir du handle de file d’attente spécifié.

[in] Verb

Verbe HTTP à utiliser pour l’opération push. L’opération push HTTP.sys prend uniquement en charge HttpVerbGET et HttpVerbHEAD.

[in] Path

Partie du chemin d’accès de l’URL de la ressource en cours d’envoi(push).

[in, optional] Query

Partie requête de l’URL de la ressource en cours d’envoi. Cette chaîne ne doit pas inclure le point d’interrogation de début ( ?).

[in, optional] Headers

En-têtes de requête pour l’opération push.

Vous ne devez pas fournir d’en-tête d’hôte, car HTTP.sys génère automatiquement les informations d’hôte correctes. HTTP.sys ne prend pas en charge les opérations push inter-origines, HTTP.sys applique et génère des informations sur l’hôte qui correspondent à la demande initiée par le client d’origine.

La demande push n’étant pas autorisée à avoir un corps d’entité, vous ne pouvez pas inclure un en-tête Content-Length différent de zéro ou un en-tête Transfer-Encoding.

Valeur retournée

Si la fonction réussit, elle retourne NO_ERROR.

Si la fonction échoue, elle retourne un code d’erreur système défini dans WinError.h.

Remarques

Vous devez appeler HttpDeclarePush avant d’envoyer des octets de réponse susceptibles d’amener le client à découvrir la sous-ressource elle-même. Le fait de ne pas observer cet ordre entraîne une course entre le serveur qui envoie la ressource et le client qui récupère les ressources, ce qui peut gaspiller la bande passante. L’application serveur doit uniquement utiliser HttpDeclarePush pour envoyer (push) les ressources dont l’application serveur est très sûre qu’elles sont nécessaires et qui ne sont pas déjà mises en cache par le client. Si l’application serveur envoie (push) d’autres ressources, une utilisation inutile de la bande passante et du processeur peut se produire.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 (applications de bureau uniquement)
Serveur minimal pris en charge Windows Server 2016 (applications de bureau uniquement)
Plateforme cible Windows
En-tête http.h
Bibliothèque Httpapi.lib
DLL Httpapi.dll

Voir aussi

HTTP_REQUEST_HEADERS

HTTP_VERB

HttpCreateRequestQueue