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 Standard-Syntaxausdrucks analysieren können:

  • Bestimmen Sie, dass ein bestimmter HTTP-Header vorhanden ist.

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

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

    Beispielsweise können Sie Anforderungen 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-Anforderung, die an eine bestimmte Anwendung gerichtet ist.

    Beispielsweise können Sie alle POST-Anforderungen identifizieren, die an eine Datenbankanwendung weitergeleitet werden, um zwischengespeicherte Anwendungsdaten zu aktualisieren.

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

Informationen zu Textvorgängen

Ein textbasierter Ausdruck besteht aus mindestens einem Präfix zum Identifizieren eines Datenelements und normalerweise (wenn auch nicht immer) einer Operation für dieses Präfix. Textbasierte Vorgänge können auf jeden Teil einer Anforderung oder einer Antwort angewendet werden. Grundlegende Operationen für Text umfassen verschiedene Arten von Zeichenfolgenübereinstimmungen.

Der folgende Ausdruck vergleicht beispielsweise einen Headerwert mit einer Zeichenfolge:

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

Die folgenden Ausdrücke sind Beispiele für die Übereinstimmung mit einem Dateityp in einer Anforderung:

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

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

In den obigen Beispielen erlaubt der contains Operator eine partielle Übereinstimmung und der eq Operator sucht nach einer exakten Übereinstimmung.

Andere Operationen stehen zur Verfügung, um die Zeichenfolge zu formatieren, bevor sie ausgewertet wird. Sie können beispielsweise Textoperationen verwenden, um Anführungszeichen und Leerzeichen zu entfernen, die Zeichenfolge in Kleinbuchstaben zu konvertieren oder Zeichenfolgen zu verketten.

Hinweis:

Komplexe Operationen sind verfügbar, um Abgleich basierend auf Mustern durchzuführen oder einen Typ von Textformat 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. Der folgende Ausdruck verkettet beispielsweise die zurückgegebenen Werte jedes Präfixes:

http.req.hostname + http.req.url

Es folgt ein Beispiel für einen zusammengesetzten Textausdruck, der eine logische AND 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 primären Kategorien 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. Sie können die Auswirkungen auf die Leistung von Richtlinien testen, die einen Dokumentkörper auswerten.

Richtlinien für Textausdrücke

Aus Performance-Sicht ist es in der Regel am besten, protokollbasierte Funktionen in einem Ausdruck zu verwenden. Der folgende Ausdruck verwendet beispielsweise eine protokollunterstützende Funktion:

HTTP.REQ.URL.QUERY

Der vorherige Ausdruck ist besser als der folgende äquivalente Ausdruck, der auf der Zeichenfolgenanalyse 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 Vorkommen 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 in der Regel eine bessere Leistung als reguläre Ausdrücke. Der folgende Text ist beispielsweise 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