Citrix 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 se compose d’informations de protocole HTTP telles que les en-têtes, une URL, le contenu du corps et des informations de version et d’état. Lorsque vous configurez une expression de stratégie avancée pour évaluer la charge utile HTTP, vous utilisez un préfixe d’expression de stratégie avancée et, si nécessaire, un opérateur.

Par exemple, vous utilisez l’expression suivante, qui inclut le http.req.header("<header_name>") préfixe et l’opérateur exists, 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 la 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 les suivantes :

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

Les préfixes d’expression suivants extraient du 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 la réponse HTTP. La longueur du texte renvoyé est égale au nombre de l’argument entier. Si le corps contient moins de caractères que ce qui est spécifié en 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 pour le nombre de caractères de l’argument entier.

Voici un exemple qui donne la valeur TRUE si un corps de réponse de 1024 octets contient la chaîne « https », et que cette chaîne apparaît après la chaîne « chaîne de début » et avant la chaîne « chaîne de fin » :

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