Citrix ADC

Informationen zu Textausdrücken

Sie können verschiedene Ausdrücke für die Arbeit mit Text konfigurieren, der durch die Citrix ADC-Appliance fließt. Im Folgenden finden Sie einige Beispiele, wie Sie Text mithilfe eines erweiterten Richtlinienausdrucks analysieren können:

  • Stellen Sie fest, dass ein bestimmter HTTP-Header existiert.

    Beispielsweise können Sie HTTP-Anfragen identifizieren, die einen bestimmten Accept-Language-Header enthalten, um die Anforderung an einen bestimmten Server zu leiten.

  • Bestimmen Sie, dass eine bestimmte HTTP-URL eine bestimmte Zeichenfolge enthält.

    Beispielsweise möchten Sie möglicherweise Anfragen für bestimmte URLs blockieren. Beachten Sie, dass die Zeichenfolge am Anfang, in der Mitte oder am Ende einer anderen Zeichenfolge auftreten kann.

  • Identifizieren Sie eine POST-Anfrage, die an eine bestimmte Anwendung gerichtet ist.

    Beispielsweise möchten Sie möglicherweise alle POST-Anfragen identifizieren, die an eine Datenbankanwendung gerichtet sind, um zwischengespeicherte Anwendungsdaten zu aktualisieren.

Beachten Sie, dass es spezielle Tools zum Anzeigen des Datenstroms für HTTP-Anfragen und -Antworten gibt. Sie können die Tools verwenden, um den Datenstrom anzuzeigen.

Informationen zu Operationen auf Text

Ein textbasierter Ausdruck besteht aus mindestens einem Präfix zur Identifizierung eines Datenelements und normalerweise (wenn auch nicht immer) einer Operation für dieses Präfix. Textbasierte Vorgänge können für jeden Teil einer Anfrage oder einer Antwort gelten. Zu den grundlegenden Operationen für Text gehören verschiedene Arten von Zeichenfolgenübereinstimmungen.

Zum Beispiel vergleicht der folgende Ausdruck einen Header-Wert mit einer Zeichenfolge:

http.req.header("myHeader").contains("some-text")

Die folgenden Ausdrücke sind Beispiele für den Abgleich eines Dateityps in einer Anforderung:

http.req.url.suffix.contains("jpeg")

http.req.url.suffix.eq("jpeg")

In den vorangegangenen Beispielen erlaubt der Operator “contains” eine teilweise Übereinstimmung und der EQ-Operator sucht nach einer exakten Übereinstimmung.

Andere Operationen sind verfügbar, um die Zeichenfolge vor der Auswertung zu formatieren. Sie können beispielsweise Textoperationen verwenden, um Anführungszeichen und Leerzeichen zu entfernen, die Zeichenfolge in Kleinbuchstaben umzuwandeln oder Zeichenfolgen zu verketten.

Hinweis:

Komplexe Operationen sind verfügbar, um einen auf Mustern basierenden Abgleich durchzuführen oder einen Textformattyp in einen anderen Typ zu konvertieren.

Weitere Informationen finden Sie in den folgenden Themen:

Compounding und Rangfolge in Textausdrücken

Sie können verschiedene Operatoren anwenden, um Textpräfixe oder Ausdrücke zu kombinieren. Beispielsweise verkettet der folgende Ausdruck die zurückgegebenen Werte jedes Präfixes:

http.req.hostname + http.req.url

Es folgt ein Beispiel für einen zusammengesetzten Textausdruck, der ein logisches UND verwendet. Beide Komponenten dieses Ausdrucks müssen TRUE sein, damit eine Anforderung mit dem Ausdruck übereinstimmt:

http.req.method.eq(post) && http.req.body(1024).startswith("destination=")

Hinweis:

Weitere Informationen zu Operatoren für die Compoundierung finden Sie unter Zusammengesetzte erweiterte Ausdrücke.

Kategorien von Textausdrücken

Die Hauptkategorien von Textausdrücken, die Sie konfigurieren können, sind:

Hinweis:

Das Analysieren eines Dokumentkörpers, z. B. des Hauptteils einer POST-Anforderung, kann sich auf die Leistung auswirken. Möglicherweise möchten Sie die Auswirkungen von Richtlinien auf die Leistung testen, die einen Dokumentenkörper bewerten.

Richtlinien für Textausdrücke

Unter dem Gesichtspunkt der Leistung ist es typischerweise am besten, protokollbewusste Funktionen in einem Ausdruck zu verwenden. Der folgende Ausdruck verwendet beispielsweise eine protokollbewusste Funktion:

HTTP.REQ.URL.QUERY

Der vorherige Ausdruck schneidet besser ab als der folgende äquivalente Ausdruck, der auf dem Parsen von Zeichenfolgen basiert:

HTTP.REQ.URL.AFTER_STR("?")

Im ersten Fall betrachtet der Ausdruck speziell die URL-Abfrage. Im zweiten Fall scannt der Ausdruck die Daten auf das erste Auftreten eines Fragezeichens.

Es gibt auch einen Leistungsvorteil von strukturiertem Analysieren von Text, wie im folgenden Ausdruck:

HTTP.REQ.HEADER("Example").TYPECAST_LIST_T(',').GET(1)

(Weitere Informationen zum Typecasting finden Sie unter Typecasting von Daten. Der Typecast-Ausdruck, der kommagetrennte Daten sammelt und sie in eine Liste strukturiert, würde normalerweise besser funktionieren als das folgende unstrukturierte Äquivalent:

HTTP.REQ.HEADER("Example").AFTER_STR(",").BEFORE_STR(",")

Schließlich haben unstrukturierte Textausdrücke typischerweise eine bessere Leistung als reguläre Ausdrücke. Zum Beispiel ist das Folgende ein unstrukturierter Textausdruck:

HTTP.REQ.HEADER("Example").AFTER_STR("more")

Der vorherige Ausdruck würde im Allgemeinen eine bessere Leistung bieten als das folgende Äquivalent, bei dem ein regulärer Ausdruck verwendet wird:

HTTP.REQ.HEADER("Example").AFTER_REGEX(re/more/)

Weitere Informationen zu regulären Ausdrücken finden Sie unter Reguläre Ausdrücke.

Informationen zu Textausdrücken