Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 9128|Antwort: 0

[Quelle] Filterfabriken, die in Spring Cloud Gateway integriert sind

[Link kopieren]
Veröffentlicht am 07.02.2022 13:36:49 | | |
Eingebaute Filterfabrik

Hier ist eine einfache Tabelle aller Filterfabriken, die in Spring Cloud Gateway eingebaut sind, die nicht sehr detailliert ist, aber als schneller Überblick dienen kann. Folgendermaßen:

Filterfabrik
Funktion
Parameter
AddRequestHeader
Füge der ursprünglichen Anfrage einen Header hinzu
Header-Name und Wert
AddRequestParameter
Fügen Sie Anfrageparameter zur ursprünglichen Anfrage hinzu
Parametername und Wert
AddResponseHeader
Füge der ursprünglichen Antwort einen Header hinzu
Header-Name und Wert
DedupeResponseHeader
Lehnt doppelte Werte im Antwortheader ab
Der Headername und die Deduplizierungsstrategie, die dedupliziert werden müssen
Hystrix
Führen Sie den Sicherungsschutz von Hystrix für die Strecke ein
Der Name HystrixCommand
FallbackHeader
Fügen Sie spezifische Ausnahmeinformationen in den Anfrage-Header der FallbackUri hinzu
Name des Headers
PräfixPfad
Fügen Sie dem ursprünglichen Anfragepfad ein Präfix hinzu
Präfixpfad
PreserveHostHeader
Füge der Anfrage eine Eigenschaft preserveHostHeader=true hinzu, die der Routing-Filter prüft, um zu entscheiden, ob du den ursprünglichen Host senden möchtest
nicht
RequestRateLimiter
Der Drosselalgorithmus wird verwendet, um Anfragen zu drosseln, und ist ein Token-Bucket
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
Weiterleitung
Leite die ursprüngliche Anfrage auf die angegebene URL um
HTTP-Statuscode und Weiterleitungs-URL
RemoveHopByHopHeadersFilter
Entfernen Sie eine Reihe von Headern, die von der IETF-Organisation für die ursprüngliche Anfrage vorgeschrieben wurden.
Das ist standardmäßig aktiviert, und man kann angeben, welche Header nur über die Konfiguration gelöscht werden
RemoveRequestHeader
Lösche einen Header für die ursprüngliche Anfrage
Header-Name
RemoveResponseHeader
Entferne einen Header für die ursprüngliche Antwort
Header-Name
RewritePath
Schreibe den ursprünglichen Anforderungspfad neu
Das ursprüngliche Pfad-Regex und das Regex des umgeschriebenen Pfades
RewriteResponseHeader
Schreibe einen Header in der ursprünglichen Antwort um
Header-Name, reguläre Wertausdruck, umgeschriebener Wert
SaveSession
Setzen Sie die WebSession::save-Operation durch, bevor Sie die Anfrage weiterleiten
nicht
secureHeaders
Fügen Sie eine Reihe von Antwortheadern hinzu, die als Sicherheit zur ursprünglichen Antwort dienen
Keine, du kannst die Werte dieser Sicherheits-Response-Header modifizieren
SetPath
Ändern Sie den ursprünglichen Anfragepfad
Modifizierter Weg
SetResponseHeader
Ändere den Wert eines Headers in der ursprünglichen Antwort
Header-Name, der modifizierte Wert
SetStatus
Ändern Sie den Statuscode der ursprünglichen Antwort
HTTP-Statuscodes, die Zahlen oder Zeichenketten sein können
StreifenPräfix
Wird verwendet, um den Pfad der ursprünglichen Anfrage abzuschneiden
Verwenden Sie Zahlen, um die Anzahl der zu trunkierten Pfade anzuzeigen
Wiederholen
Versuchen Sie es erneut für verschiedene Antworten
Rettries 、Statuses、Methoden、Serie
RequestSize
Stellen Sie die Größe der maximal angeforderten Pakete fest, die empfangen werden dürfen. Überschreitet die Paketgröße des Anforderungspakets den gesetzten Wert, wird 413 Payload Too Large zurückgegeben
Die Paketgröße der Anfragen beträgt Bytes und der Standardwert beträgt 5M
ModifyRequestBody
Ändern Sie den Inhalt des ursprünglichen Anforderungskörpers, bevor Sie die Anfrage weiterleiten
Der Inhalt des modifizierten Anforderungskörpers
ModifyResponseBody
Ändere den Inhalt des ursprünglichen Antwortkörpers
Der Inhalt des modifizierten Antwortkörpers
Vorgabe
Filter für alle Routen hinzufügen
Name und Wert der Filterfabrik

Tipps: Jede Filterfabrik entspricht einer Implementierungsklasse, und dieseDer Name der Klasse muss mit GatewayFilterFactory enden.Dies ist eine Konvention von Spring Cloud Gateway, zum Beispiel ist die Implementierungsklasse, die AddRequestHeader entspricht, AddRequestHeaderGatewayFilterFactory. Freunde, die sich für den Quellcode interessieren, können bestimmte Klassennamen gemäß dieser Regel zusammenschneiden, um den Implementierungscode dieser eingebauten Filterfabriken zu finden.

1、AddRequestHeader GatewayFilter Factory

Fügen Sie der ursprünglichen Anfrage einen Header hinzu, Konfigurationsbeispiel:


Fügen Sie der ursprünglichen Anfrage einen Request-Header namens X-Request-Foo mit dem Wert Bar hinzu

2、AddRequestParameter GatewayFilter Factory

Fügen Sie Anfrageparameter und -werte zur ursprünglichen Anfrage hinzu, Konfigurationsbeispiel:


Füge der ursprünglichen Anfrage einen Parameter namens foo mit dem Wert bar hinzu, d.h.: foo=bar

3、AddResponseHeader GatewayFilter Factory

Füge der ursprünglichen Antwort einen Header hinzu, Konfigurationsbeispiel:


Füge der ursprünglichen Antwort einen Antwort-Header namens X-Request-Foo mit dem Wert Bar hinzu

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader kann doppelte Werte in Response-Headern basierend auf dem konfigurierten Header-Namen und der Deduplizierungsrichtlinie entfernen, was eine neue Funktion von Spring Cloud Greenwich SR2 ist und unter dieser Version nicht verwendet werden kann.

WirWenn der CORS-Header (Solving Cross-Domain) sowohl am Gateway als auch am Microservice gesetzt ist und keine Konfiguration vorgenommen wird, dann > der Wert des CORS-Headers, der durch die Anfrage des -> Gateway -Microservice erhalten wird,, es wird so aussehen:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Sie sehen, dass die Werte dieser beiden Header dupliziert sind. Wenn Sie die Werte dieser beiden Header deduplizieren möchten, müssen Sie DedupeResponseHeader verwenden, Konfigurationsbeispiel:

Deduplizierungsstrategie:

  • RETAIN_FIRST: Default, behalten Sie den ersten Wert
  • RETAIN_LAST: Behalten Sie den letzten Wert
  • RETAIN_UNIQUE: Alle einzigartigen Werte in der Reihenfolge behalten, in der sie zuerst erschienen sind.


Wenn Sie ein umfassenderes Verständnis der Filterfabrik erhalten möchten, wird empfohlen, den Quellcode der Filterfabrik zu lesen, da der Quellcode detaillierte Notizen und Beispiele enthält, die besser sind als die offizielle Dokumentation: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Hystrix GatewayFilter Factory

Einführung des Sicherungsschutzes von Hystrix für Routen, Konfigurationsbeispiel:


Hystrix ist die erste Generation fehlertoleranter Komponenten von Spring Cloud, ist aber in den Wartungsmodus eingetreten, und Hystrix wird in Zukunft von Spring Cloud entfernt und durch Alibaba Sentinel/Resilience4J ersetzt. Dieser Artikel wird also nicht ins Detail gehen; falls Sie interessiert sind, können Sie die offizielle Dokumentation konsultieren: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

Ebenfalls Hystrix unterstützt, unterstützt die im vorherigen Abschnitt beschriebene Filterfabrik einen Konfigurationsparameter: fallbackUri, der verwendet wird, um Anfragen an eine bestimmte URI weiterzuleiten, wenn eine Ausnahme auftritt. Die FallbackHeaders-Filterfabrik kann beim Weiterleiten einer Anfrage an die URI einen Header hinzufügen, und der Wert dieses Headers ist die spezifische Ausnahmeinformation. Konfigurationsbeispiel:


Ich werde hier nicht ins Detail gehen, falls du interessiert bist, kannst du die offizielle Dokumentation konsultieren: FallbackHeaders GatewayFilter Factory

7、PrefixPath GatewayFilter Factory

Fügen Sie dem ursprünglichen Anfragepfad einen Präfixpfad hinzu, Konfigurationsbeispiel:


Diese Konfiguration macht den Besuch bei ${GATEWAY_URL}/hello weitergeleitet anhttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilter Factory

Füge der Anfrage eine Eigenschaft preserveHostHeader=true hinzu, die der Routing-Filter prüft, um zu entscheiden, ob der ursprüngliche Host-Header gesendet wird. Konfigurationsbeispiel:


Wenn nicht gesetzt, wird der Header namens Host vom HTTP-Client gesteuert.

9、RequestRateLimiter GatewayFilter Factory

Er wird verwendet, um Anfragen zu drosseln, und der Drosselalgorithmus ist ein Token-Bucket. Konfigurationsbeispiel:


10、RedirectTo GatewayFilter Factory

Leite die ursprüngliche Anfrage auf die angegebene URL um, Konfigurationsbeispiel:


Mit dieser Konfiguration wird der Zugriff auf ${GATEWAY_URL}/hello auf umgeleitet https://acme.org/hello , und einen tragenLocation:http://acme.orgHeader, während der HTTP-Statuscode, der den Client zurückgibt, 302 ist

Notizen:

Der HTTP-Statuscode sollte 3xx sein, z. B. 301

Die URL muss eine legitime URL sein, die als Wert des Location Headers dient

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

Für die ursprüngliche Anfrage, eine von der IETF-Organisation festgelegte Reihe von Headern zu entfernen, sind die standardmäßig gelöschten Header wie folgt:


  • Verbindung
  • Bleib am Leben
  • Proxy-Authentifizierung
  • Proxy-Autorisierung
  • TE
  • Anhänger
  • Transfer-Kodierung
  • Upgrade


Du kannst angeben, welche Header nur über die Konfiguration gelöscht werden, Konfigurationsbeispiel:


12、RemoveRequestHeader GatewayFilter Factory

Um einen Header für die ursprüngliche Anfrage zu entfernen, konfigurieren Sie ein Beispiel:


Entferne den Request-Header namens X-Request-Foo aus der ursprünglichen Anfrage

13、RemoveResponseHeader GatewayFilter Factory

Um einen Header für die ursprüngliche Antwort zu entfernen, konfigurieren Sie ein Beispiel:


Entferne den Antwort-Header namens X-Request-Foo aus der ursprünglichen Antwort

14、RewritePath GatewayFilter Factory

Überschreiben des ursprünglichen Anfragepfads mit einem regulären Ausdruck, Konfigurationsbeispiel:


Diese Konfiguration erlaubt den Zugriff auf /foo/bar, um den Pfad nach /bar umzuschreiben und weiterzuleiten, d. h. weitergeleitet an https://example.org/bar。 Beachten Sie, dass aufgrund der YAML-Syntax $\ anstelle von $ verwendet werden muss

15、RewriteResponseHeader GatewayFilter Factory

Schreibe einen Header in der ursprünglichen Antwort um, Konfigurationsbeispiel:


Die Bedeutung dieser Konfiguration besteht darin, dass, wenn der Wert von X-Response-Foo im Response-Header /42?user=ford&password=omg!what&flag=true ist, er gemäß dem konfigurierten Wert zu /42?user=ford&password=***&flag=true umgeschrieben wird, also das password=omg!what, wird zu password=*** umgeschrieben

16、SaveSession GatewayFilter Factory

Bevor Sie die Anfrage weiterleiten, setzen Sie die WebSession::save-Operation durch, Konfigurationsbeispiel:


Es wird hauptsächlich für die aufgeschobene Datenspeicherung verwendet (Daten werden nicht sofort gespeichert) wie Spring Session und möchte sicherstellen, dass der Sitzungszustand vor der Weiterleitung der Anfrage gespeichert wird. Wenn Sie Spring Secutiry in Spring Session integrieren und sicherstellen möchten, dass alle Sicherheitsinformationen an nachgelagerte Maschinen übertragen werden, müssen Sie diesen Filter konfigurieren.

17、secureHeaders GatewayFilter Factory

Die secureHeaders-Filterfabrik basiert hauptsächlich auf den Empfehlungen in diesem Blog und fügt eine Reihe von Response-Headern hinzu, die eine Sicherheitsrolle in der ursprünglichen Antwort spielen. Standardmäßig werden folgende Header (einschließlich Werte) hinzugefügt:


  • X-Xss-Protection:1; mode=block
  • Strict-Transport-Security:max-age=631138519
  • X-Frame-Options:DENY
  • X-Content-Type-Options:nosniff
  • Referrer-Policy:no-referrer
  • Content-Security-Policy:default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'
  • X-Download-Options:noopen
  • X-Permitted-Cross-Domain-Policies:none


Wenn Sie die Werte dieser Header modifizieren möchten, müssen Sie die entsprechenden Suffixe dieser Header verwenden, wie folgt:

  • xss-protection-header
  • Streng-Transport-Sicherheit
  • Rahmenoptionen
  • Inhaltstyp-Optionen
  • Vermittler-Politik
  • Inhalts-Sicherheitsrichtlinie
  • Download-Optionen
  • erlaubte-domänenübergreifende Richtlinien


Konfigurationsbeispiel:


Wenn Sie bestimmte Header deaktivieren möchten, können Sie folgende Konfiguration verwenden:

18、SetPath GatewayFilter Factory

Ändern Sie den ursprünglichen Anfragepfad und konfigurieren Sie ein Beispiel:


Diese Konfiguration führt dazu, dass es beim Zugriff an ${GATEWAY_URL}/foo/bar weitergeleitet wirdhttps://example.org/bar , das heißt, das ursprüngliche /foo/bar wurde zu /bar geändert

19、SetResponseHeader GatewayFilter Factory

Ändern Sie den Wert eines Headers in der ursprünglichen Antwort, konfigurieren Sie ein Beispiel:


Ändere den Wert von X-Response-Foo in der ursprünglichen Antwort auf Bar

20、SetStatus GatewayFilter Factory

Ändern Sie den Statuscode der ursprünglichen Antwort, Konfigurationsbeispiel:


Der Wert von SetStatusd kann entweder eine Zahl oder eine Zeichenkette sein. Aber es muss der Wert in der Spring HttpStatus-Aufzählungsklasse sein. Beide oben genannten Konfigurationen können den HTTP-Statuscode 401 zurückgeben.

21、StripPrefix GatewayFilter Factory

Um den Pfad der ursprünglichen Anfrage abzuschneiden, Konfigurationsbeispiel:


Wie in der obigen Konfiguration gezeigt, wird der angeforderte Pfad /name/bar/foo auf /foo abgeschnitten und weitergeleitet, das heißt, zwei Pfade werden abgeschnitten.

22、Retry GatewayFilter Factory

Versuchen Sie es erneut für verschiedene Antworten, z. B. für HTTP-Statuscodes, Konfigurationsbeispiel:


Folgende Parameter können konfiguriert werden:

  • Wiederholungen: Die Anzahl der Wiederholungen
  • Statuses: Der Statuscode, der erneut ausprobiert werden muss, setzt in org.springframework.http.Http.HttpStatus
  • Methoden: Die Anfragemethode, die erneut ausprobiert werden muss, mit einem Wert in org.springframework.http.Http.HttpMethod
  • series:HTTP-Statuscode-Sequenz, mit einem Wert in org.springframework.http.Http.HttpStatus.Series


23、RequestSize GatewayFilter Factory

Stellen Sie die Größe der maximal zulässigen Anfragepakete ein, Konfigurationsbeispiel:


Überschreitet die Paketgröße der Anfrage den gesetzten Wert, wird eine 413 Payload Too Large zusammen mit einer errorMessage zurückgegeben

24、Modify Request Body GatewayFilter Factory

Ändere den ursprünglichen Inhalt des Anforderungskörpers, bevor du die Anfrage weiterleitest; die Filterfabrik kann nur per Code konfiguriert werden, nicht in der Konfigurationsdatei. Codebeispiel:


Tipps: Diese Filterfabrik ist im BETA-Zustand und die API könnte sich in Zukunft ändern.Bitte nutzen Sie die Produktionsumgebung mit Vorsicht

25、Modify Response Body GatewayFilter Factory

Die Filterfabrik kann auch verwendet werden, um den Inhalt des ursprünglichen Antwortkörpers zu verändern, und die Filterfabrik kann nur per Code konfiguriert werden, nicht in der Konfigurationsdatei. Codebeispiel:


Tipps: Diese Filterfabrik befindet sich im BETA-Zustand, die API könnte sich in Zukunft ändern, bitte verwenden Sie sie mit Vorsicht in der Produktionsumgebung

26、Default Filters

Default Filters werden verwendet, um allen Routen eine Filterfabrik hinzuzufügen, das heißt, um durchzugehenDer vom Standardfilter werkseitig konfigurierte Filter gilt für alle Routen。 Konfigurationsbeispiel:


(Ende)




Vorhergehend:Docker-Protokolle füllen Festplatten und Datenmigration
Nächster:Java-Dynamisch gespleißte SQL-Anweisungen verhindern Datenbank-Injection
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com