-
AppExpert Anwendungen und Vorlagen
-
Konfigurieren der Anwendungsauthentifizierung, -autorisierung und -überwachung
-
-
Vermeiden von HTTP-Callout-Rekursion
-
Anwendungsfall: ESI-Unterstützung zum dynamischen Abrufen und Aktualisieren von Inhalten
-
-
Konfigurieren des erweiterten Richtlinienausdrucks: Erste Schritte
-
Erweiterte Richtlinienausdrücke: Arbeiten mit Datumsangaben, Uhrzeiten und Zahlen
-
Erweiterte Richtlinienausdrücke: Analysieren von HTTP-, TCP- und UDP-Daten
-
Ausdrücke zur Identifizierung des Protokolls in einem eingehenden IP-Paket
-
Ausdrücke für HTTP-Statuscodes und numerische HTTP-Nutzlastdaten außer Datumsangaben
-
Operationen für HTTP-, HTML- und XML-Kodierung und „sichere“ Zeichen
-
Ausdrücke zum Auswerten einer DNS-Nachricht und Identifizieren des Trägerprotokolls
-
Erweiterte Richtlinienausdrücke: Analysieren von SSL-Zertifikaten
-
Erweiterte Richtlinienausdrücke: IP- und MAC-Adressen, Durchsatz, VLAN-IDs
-
Erweiterte Richtlinienausdrücke: Stream Analytics-Funktionen
-
Zusammenfassende Beispiele für Standard-Syntaxausdrücke und -richtlinien
-
Tutorialbeispiele für Standard-Syntaxrichtlinien für das Umschreiben
-
Migration von Apache mod_rewrite Regeln auf die Standardsyntax
-
This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
Vermeiden von HTTP-Callout-Rekursion
Obwohl die Citrix ADC Appliance nicht auf die Gültigkeit der HTTP-Callout-Anforderung überprüft, analysiert sie die Anforderung einmal, bevor sie die Anforderung an den HTTP-Callout-Agent sendet. Diese Analyse ermöglicht es der Appliance, die Callout-Anforderung wie jede andere eingehende Anforderung zu behandeln, wodurch Sie mehrere nützliche Citrix ADC Funktionen (z. B. das integrierte Caching) für die Bearbeitung der Callout-Anforderung konfigurieren können.
Während dieser Analyse kann die HTTP-Callout-Anforderung jedoch dieselbe Richtlinie auswählen und sich daher rekursiv aufrufen. Die Appliance erkennt den rekursiven Aufruf und löst eine undefinierte (UNDEF) -Bedingung aus. Der rekursive Aufruf führt jedoch dazu, dass die Richtlinien- und HTTP-Callout-Select-Leistungsindikatoren um jeweils zwei Zählungen erhöht werden, anstatt je eine Zählung.
Um zu verhindern, dass sich ein Callout selbst aufruft, müssen Sie mindestens ein eindeutiges Merkmal der HTTP-Callout-Anforderung identifizieren und dann alle Anforderungen mit diesem Merkmal von der Richtlinienregel ausschließen, die das Callout aufruft. Sie können dies tun, indem Sie einen weiteren Standard-Syntaxausdruck in die Richtlinienregel einfügen. Der Ausdruck muss dem SYS.HTTP_CALLOUT(<name>)
Ausdruck vorangestellt sein, damit er ausgewertet wird, bevor der Calloutausdruck ausgewertet wird. Beispiel:
<Expression that prevents callout recursion> OR SYS.HTTP_CALLOUT(<name>)
<!--NeedCopy-->
Wenn Sie eine Richtlinienregel auf diese Weise konfigurieren, wenn die Appliance die Anforderung generiert und analysiert, wird die Verbundregel auf FALSE ausgewertet, das Callout wird nicht ein zweites Mal generiert, und die Auswahlindikatoren werden korrekt erhöht.
Eine Möglichkeit, mit der Sie einer HTTP-Callout-Anforderung ein eindeutiges Merkmal zuweisen können, besteht darin, einen eindeutigen benutzerdefinierten HTTP-Header einzubeziehen, wenn Sie das Callout konfigurieren. Es folgt ein Beispiel für ein HTTP-Callout namens MyCallout. Das Callout generiert eine HTTP-Anforderung, die prüft, ob die IP-Adresse eines Clients in einer Datenbank mit IP-Adressen auf der Sperrliste vorhanden ist. Das Callout enthält einen benutzerdefinierten Header namens Request, der auf den Wert Callout Request gesetzt ist. Eine global gebundene Responderrichtlinie, Pol1, ruft das HTTP-Callout auf, schließt jedoch alle Anforderungen aus, deren Request-Header auf diesen Wert gesetzt ist, und verhindert so einen zweiten Aufruf von MyCallout. Der Ausdruck, der einen zweiten Aufruf verhindert, ist HTTP.REQ.HEADER (Request) .EQ (Callout Request) .NOT.
Beispiel:
> add policy httpCallout myCallout
Done
> set policy httpCallout myCallout -IPAddress 10.102.3.95 -port 80 -returnType TEXT -hostExpr ""10.102.3.95"" -urlStemExpr ""/cgi-bin/check_clnt_from_database.pl"" -headers Request("Callout Request") -parameters cip(CLIENT.IP.SRC) -resultExpr "HTTP.RES.BODY(100)"
Done
> add responder policy Pol1 "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(myCallout).CONTAINS("IP Matched")" RESET
Done
> bind responder global Pol1 100 END -type OVERRIDE
Done
<!--NeedCopy-->
Hinweis: Sie können einen Ausdruck auch konfigurieren, um zu überprüfen, ob die Anforderungs-URL den für das HTTP-Callout konfigurierten Stammausdruck enthält. Um die Lösung zu implementieren, stellen Sie sicher, dass der HTTP-Callout-Agent nur auf HTTP-Callouts und nicht auf andere Anforderungen reagieren kann, die über die Appliance geleitet werden. Wenn der HTTP-Callout-Agent eine Anwendung oder ein Webserver ist, der andere Clientanforderungen bedient, verhindert ein solcher Ausdruck, dass die Appliance diese Clientanforderungen verarbeitet. Verwenden Sie stattdessen einen eindeutigen benutzerdefinierten Header wie oben beschrieben.
Teilen
Teilen
In diesem Artikel
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.