Citrix ADC

Informationen zur Auswertung von HTTP- und TCP-Nutzlast

Die Nutzlast einer HTTP-Anforderung oder -Antwort besteht aus HTTP-Protokollinformationen wie Header, URL, Textkörperinhalt sowie Versions- und Statusinformationen. Wenn Sie einen Standard-Syntaxausdruck für die Auswertung der HTTP-Nutzlast konfigurieren, verwenden Sie ein Standard-Syntaxausdruckpräfix und gegebenenfalls einen Operator.

Beispielsweise verwenden Sie den folgenden Ausdruck, der dashttp.req.header("<header_name>") Präfix und den Operator existiert enthält, wenn Sie bestimmen 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. Der folgende zusammengesetzte Ausdruck könnte beispielsweise mit verschiedenen Citrix ADC Features nützlich sein, z. B. integriertes Caching, Rewrite und Responder. Dieser Ausdruck verwendet zunächst den && booleschen 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 Features eines TCP- oder UDP-Pakets zu untersuchen, einschließlich der folgenden:

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

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

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

Es folgt ein Beispiel, das auf TRUE ausgewertet, wenn ein Antwortkörper von 1024 Bytes die Zeichenfolge “https” enthält, und diese Zeichenfolge tritt nach der Zeichenfolge “start string” und vor der Zeichenfolge “end string”:

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. Weitere Informationen zu Vorgängen, die Sie auf Text anwenden können, finden Sie unterErweiterte Richtlinienausdrücke: Auswerten von Text.

Informationen zur Auswertung von HTTP- und TCP-Nutzlast