Citrix ADC

Informationen zur Auswertung von HTTP- und TCP-Nutzdaten

Die Nutzlast einer HTTP-Anforderung oder -Antwort besteht aus HTTP-Protokollinformationen wie Headern, einer URL, Textinhalt sowie Versions- und Statusinformationen. Wenn Sie einen erweiterten Richtlinienausdruck zur Auswertung der HTTP-Nutzlast konfigurieren, verwenden Sie ein Präfix für erweiterte Richtlinienausdrücke und, falls erforderlich, einen Operator.

Beispielsweise verwenden Sie den folgenden Ausdruck, der das http.req.header("<header_name>") Präfix und den Operator “existens” enthält, wenn Sie ermitteln möchten, ob eine HTTP-Verbindung einen benutzerdefinierten Header mit dem Namen “myHeader” enthält:

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

Sie können auch mehrere erweiterte Richtlinienausdrücke mit booleschen und arithmetischen Operatoren kombinieren. Beispielsweise könnte der folgende zusammengesetzte Ausdruck für verschiedene Citrix ADC-Funktionen wie Integrated Caching, Rewrite und Responder nützlich sein. Dieser Ausdruck verwendet zuerst den Boolean-Operator &&, um zu bestimmen, ob eine HTTP-Verbindung den Content-Type-Header mit dem Wert “text/html” enthält. Wenn dieser Vorgang den Wert FALSE zurückgibt, bestimmt der Ausdruck, ob die HTTP-Verbindung einen Header “Transfer-Encoding” oder “Content-Length” enthält.

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

Die Nutzlast eines TCP- oder UDP-Pakets ist der Datenteil des Pakets. Sie können erweiterte Richtlinienausdrücke konfigurieren, um Funktionen eines TCP- oder UDP-Pakets zu untersuchen, einschließlich der folgenden:

  • Quell- und Zieldomänen
  • Quell- und Zielports
  • Der Text in der Nutzlast
  • Record-Typen

Die folgenden Ausdruckspräfixe extrahieren Text aus dem Hauptteil der Nutzlast:

  • HTTP.REQ.BODY(integer). Gibt den Hauptteil einer HTTP-Anforderung als mehrzeiliges Textobjekt zurück, bis zu der im Argument Integer angegebenen Zeichenposition. Wenn der Körper weniger Zeichen enthält als im Argument angegeben, wird der gesamte Körper zurückgegeben.
  • HTTP.RES.BODY(integer). Gibt einen Teil des HTTP-Antwortkörpers zurück. Die Länge des zurückgegebenen Textes entspricht der Zahl im Argument Integer. Wenn der Körper weniger Zeichen enthält als in Integer angegeben, wird der gesamte Körper zurückgegeben.
  • CLIENT.TCP.PAYLOAD(integer). Gibt TCP-Nutzdaten als Zeichenfolge zurück, beginnend mit dem ersten Zeichen in der Nutzlast und fortgesetzt für die Anzahl der Zeichen im Argument Integer.

Es folgt ein Beispiel, das zu TRUE ausgewertet wird, wenn ein Antworttext von 1024 Byte die Zeichenfolge “https” enthält, und diese Zeichenfolge tritt nach der Zeichenfolge “Startzeichenfolge” und vor der Zeichenfolge “Endzeichenfolge” auf:

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

Hinweis: Sie können jede Textoperation auf den Nutzlastkörper anwenden. Informationen zu Operationen, die Sie auf Text anwenden können, finden Sie unter Erweiterte Richtlinienausdrücke: Text auswerten.

Informationen zur Auswertung von HTTP- und TCP-Nutzdaten