ADC

A propos de l’évaluation de la charge utile HTTP et TCP

La charge utile d’une requête ou d’une réponse HTTP est constituée d’informations de protocole HTTP telles que des en-têtes, une URL, le contenu du corps et des informations de version et d’état. Lorsque vous configurez une expression de syntaxe par défaut pour évaluer la charge utile HTTP, vous utilisez un préfixe d’expression de syntaxe par défaut et, si nécessaire, un opérateur.

Par exemple, vous utilisez l’expression suivante, qui inclut lehttp.req.header("<header_name>") préfixe et l’opérateur existant, si vous souhaitez déterminer si une connexion HTTP inclut un en-tête personnalisé nommé « myHeader » :

http.req.header("myHeader").exists

Vous pouvez également combiner plusieurs expressions de stratégie avancées avec des opérateurs booléens et arithmétiques. Par exemple, l’expression composée suivante peut être utile avec diverses fonctionnalités de Citrix ADC, telles que la mise en cache intégrée, la réécriture et le répondeur. Cette expression utilise d’abord l’opérateur && booléen pour déterminer si une connexion HTTP inclut l’en-tête Content-Type avec la valeur “text/html.” Si cette opération renvoie une valeur FALSE, l’expression détermine si la connexion HTTP inclut un en-tête « Transfer-Encoding » ou « Content-Length ».

(http.req.header("Content-Type").exists && http.req.header("Content-Type").eq("text/html")) || (http.req.header("Transfer-Encoding").exists) || (http.req.header("Content-Length").exists)

La charge utile d’un paquet TCP ou UDP est la partie de données du paquet. Vous pouvez configurer des expressions de stratégie avancées pour examiner les fonctionnalités d’un paquet TCP ou UDP, notamment :

  • Domaines source et destination
  • Ports source et destination
  • Le texte dans la charge utile
  • Types d’enregistrements

Les préfixes d’expression suivants extraient le texte du corps de la charge utile :

  • HTTP.REQ.BODY(integer). Renvoie le corps d’une requête HTTP sous la forme d’un objet texte multiligne, jusqu’à la position du caractère indiquée dans l’argument entier. Si le corps contient moins de caractères que ce qui est spécifié dans l’argument, le corps entier est renvoyé.
  • HTTP.RES.BODY(integer). Renvoie une partie du corps de réponse HTTP. La longueur du texte retourné est égale au nombre dans l’argument entier. S’il y a moins de caractères dans le corps que ce qui est spécifié dans l’entier, le corps entier est renvoyé.
  • CLIENT.TCP.PAYLOAD(integer). Retourne les données de charge utile TCP sous forme de chaîne, en commençant par le premier caractère de la charge utile et en continuant le nombre de caractères dans l’argument entier.

Voici un exemple qui évalue à TRUE si un corps de réponse de 1024 octets contient la chaîne « https », et cette chaîne se produit après la chaîne « start string » et avant la chaîne « end string » :

http.res.body(1024).after_str("start_string").before_str("end_string").contains("https")

Remarque : Vous pouvez appliquer n’importe quelle opération de texte au corps de la charge utile. Pour plus d’informations sur les opérations que vous pouvez appliquer au texte, voir Expressions de stratégie avancées : évaluation du texte.

A propos de l’évaluation de la charge utile HTTP et TCP