Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 9128|Antwoord: 0

[Bron] Filterfabrieken ingebouwd in Spring Cloud Gateway

[Link kopiëren]
Geplaatst op 07-02-2022 13:36:49 | | |
Ingebouwde filterfabriek

Hier is een eenvoudige tabel van alle filterfabrieken die in Spring Cloud Gateway zijn ingebouwd, die niet erg gedetailleerd is, maar wel als een kort overzicht kan dienen. Als volgt:

Filterfabriek
functie
parameter
AddRequestHeader
Voeg een Header toe aan het oorspronkelijke verzoek
Headernaam en -waarde
AddRequestParameter
Voeg verzoekparameters toe aan het oorspronkelijke verzoek
Parameternaam en waarde
AddResponseHeader
Voeg een header toe aan het oorspronkelijke antwoord
Headernaam en -waarde
DedupeResponseHeader
Weigert dubbele waarden in de responsheader
De headernaam en deduplicatiestrategie die gededupliceerd moeten worden
Hystrix
Introduceer de zekeringbescherming van Hystrix voor de route
De naam van HystrixCommand
FallbackHeaders
Voeg specifieke uitzonderingsinformatie toe aan de requestheader van de fallbackUri
Naam van de kop
PrefixPath
Voeg een prefix toe aan het oorspronkelijke verzoekpad
Voorvoegselpad
PreserveHostHeader
Voeg een preserveHostHeader=true eigenschap toe aan het verzoek, die door het routeringsfilter wordt gecontroleerd om te bepalen of je de originele Host wilt sturen
niet
RequestRateLimiter
Het throttling-algoritme wordt gebruikt om verzoeken te beperken en is een tokenbucket
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
Doorverwijzing naar
Stuur het oorspronkelijke verzoek om naar de opgegeven URL
HTTP-statuscode en doorverwijzings-URL
VerwijderenHopByHopHeadersFilter
Verwijder een reeks headers die door de IETF-organisatie voor het oorspronkelijke verzoek zijn voorgeschreven
Dit is standaard ingeschakeld, en je kunt via de configuratie alleen aangeven welke headers verwijderd moeten worden
RemoveRequestHeader
Verwijder een header voor het oorspronkelijke verzoek
Headernaam
RemoveResponseHeader
Verwijder een header voor het oorspronkelijke antwoord
Headernaam
RewritePath
Herschrijf het oorspronkelijke verzoekpad
De oorspronkelijke pad-regex en de regex van het herschreven pad
RewriteResponseHeader
Herschrijf een header in de oorspronkelijke reactie
Headernaam, reguliere uitdrukking van waarde, herschreven waarde
SaveSession
Handhaaf de WebSession::save-operatie voordat je het verzoek doorstuurt
niet
secureHeaders
Voeg een reeks responsheaders toe die als beveiliging dienen aan de oorspronkelijke reactie
Geen enkele, je kunt de waarden van deze beveiligingsresponsheaders aanpassen
SetPath
Wijzig het oorspronkelijke aanvraagpad
Gemodificeerd pad
SetResponseHeader
Wijzig de waarde van een header in het oorspronkelijke antwoord
Headernaam, de gewijzigde waarde
SetStatus
Wijzig de statuscode van het oorspronkelijke antwoord
HTTP-statuscodes, die getallen of strings kunnen zijn.
StripPrefix
Gebruikt om het pad van het oorspronkelijke verzoek af te korten
Gebruik getallen om het aantal paden aan te geven dat afgeknott moet worden
Opnieuw
Probeer opnieuw voor verschillende antwoorden
Retries 、Statuses、Methods、Series
RequestSize
Stel de grootte in van het maximale aantal gevraagde pakketten dat ontvangen mag worden. Als de grootte van het verzoekpakket de ingestelde waarde overschrijdt, wordt 413 Payload Too Large teruggegeven
De grootte van het request-pakket is in bytes en de standaardwaarde is 5M
WijzigenVerzoekLichaam
Wijzig de inhoud van de oorspronkelijke verzoekbody voordat je het verzoek doorstuurt
De inhoud van de gewijzigde verzoekbody
ModifiifyResponseBody
Wijzig de inhoud van de oorspronkelijke responsinhoud
De inhoud van de aangepaste responsinhoud
Verstek
Voeg filters toe voor alle routes
Naam en waarde van de filterfabriek

Tips: Elke filterfabriek komt overeen met een implementatieklasse, en dezeDe naam van de klasse moet eindigen met GatewayFilterFactoryDit is een conventie van Spring Cloud Gateway; bijvoorbeeld, de implementatieklasse die overeenkomt met AddRequestHeader is AddRequestHeaderGatewayFilterFactory. Vrienden die geïnteresseerd zijn in de broncode kunnen specifieke klassennamen volgens deze regel samenvoegen om de implementatiecode van deze ingebouwde filterfabrieken te vinden.

1、AddRequestHeader GatewayFilter Factory

Voeg een header toe aan het oorspronkelijke verzoek, configuratievoorbeeld:


Voeg een requestheader toe genaamd X-Request-Foo met de waarde Bar aan het oorspronkelijke verzoek

2、AddRequestParameter GatewayFilter Factory

Voeg verzoekparameters en -waarden toe aan het oorspronkelijke verzoek, configuratievoorbeeld:


Voeg een parameter genaamd foo met de waarde bar toe aan het oorspronkelijke verzoek, namelijk: foo=bar

3、AddResponseHeader GatewayFilter Factory

Voeg een header toe aan de oorspronkelijke respons, configuratievoorbeeld:


Voeg een responsheader toe genaamd X-Request-Foo met de waarde Bar aan het oorspronkelijke antwoord

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader kan dubbele waarden verwijderen in responsheaders op basis van de geconfigureerde headernaam en het deduplicatiebeleid, wat een nieuwe functie is van Spring Cloud Greenwich SR2 en niet kan worden gebruikt onder deze versie.

WijAls de CORS (Solving Cross-Domain) Header zowel op de Gateway als op de microservice is ingesteld, en er geen configuratie wordt gemaakt, dan wordt de waarde van de CORS-header verkregen door het aanvragen van de -> Gateway -> microservice, zal het er zo uitzien:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Je kunt zien dat de waarden van deze twee headers worden gedupliceerd; als je de waarden van deze twee headers wilt dedupliceren, moet je DedupeResponseHeader gebruiken, configuratievoorbeeld:

Deduplicatiestrategie:

  • RETAIN_FIRST: Default, behoud de eerste waarde
  • RETAIN_LAST: Houd de laatste waarde
  • RETAIN_UNIQUE: Houd alle unieke waarden in de volgorde waarin ze voor het eerst verschenen


Als je een uitgebreider begrip van de filterfabriek wilt krijgen, wordt aanbevolen de broncode van de filterfabriek te lezen, omdat de broncode gedetailleerde notities en voorbeelden bevat, wat beter is dan de officiële documentatie: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Hystrix GatewayFilter Factory

Introductie van Hystrix' circuit breaker-beveiliging voor routes, configuratievoorbeeld:


Hystrix is de eerste generatie fouttolerante componenten van Spring Cloud, maar is in onderhoudsmodus gegaan, en Hystrix zal in de toekomst worden vervangen door Spring Cloud, vervangen door Alibaba Sentinel/Resilience4J. Dit artikel zal niet in detail treden; als je geïnteresseerd bent, kun je de officiële documentatie raadplegen: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

Ook Hystrix ondersteunt de filterfabriek zoals beschreven in de vorige sectie een configuratieparameter: fallbackUri, die wordt gebruikt om verzoeken door te sturen naar een specifieke URI wanneer er een uitzondering optreedt. De FallbackHeaders-filterfabriek kan een header toevoegen bij het doorsturen van een verzoek naar de URI, en de waarde van deze header is de specifieke uitzonderingsinformatie. Configuratievoorbeeld:


Ik zal hier niet in detail treden, als je geïnteresseerd bent, kun je de officiële documentatie raadplegen: FallbackHeaders GatewayFilter Factory

7、PrefixPath GatewayFilter Factory

Voeg een prefixpad toe aan het oorspronkelijke verzoekpad, configuratievoorbeeld:


Deze configuratie maakt het bezoek aan ${GATEWAY_URL}/hello doorgestuurd naarhttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilter Factory

Voeg een preserveHostHeader=true-eigenschap toe aan het verzoek, die het routeringsfilter controleert om te beslissen of de originele Host Header wordt verzonden. Configuratievoorbeeld:


Als deze niet is ingesteld, wordt de header genaamd Host beheerd door de Http-client

9、RequestRateLimiter GatewayFilter Factory

Het wordt gebruikt om verzoeken te beperken, en het throttling-algoritme is een tokenbucket. Configuratievoorbeeld:


10、RedirectTo GatewayFilter Factory

Stuur het oorspronkelijke verzoek om naar de opgegeven URL, configuratievoorbeeld:


Deze configuratie maakt toegang tot ${GATEWAY_URL}/hello doorgestuurd naar https://acme.org/hello , en draag er éénLocation:http://acme.orgHeader, terwijl de HTTP-statuscode die de client teruggeeft 302 is

Notities:

De HTTP-statuscode moet 3xx zijn, bijvoorbeeld 301

De URL moet een legitieme URL zijn die dient als de waarde van de locatieheader

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

Voor het oorspronkelijke verzoek om een reeks headers te verwijderen die door de IETF-organisatie zijn gespecificeerd, zijn de standaard verwijderde headers als volgt:


  • Verbinding
  • Keep-Alive
  • Proxy-authenticatie
  • Proxy-autorisatie
  • TE
  • Aanhangwagen
  • Overdracht-codering
  • Opwaarderen


Je kunt aangeven welke headers alleen via de configuratie worden verwijderd, configuratievoorbeeld:


12、RemoveRequestHeader GatewayFilter Factory

Om een header voor het oorspronkelijke verzoek te verwijderen, configureer je een voorbeeld:


Verwijder de requestheader genaamd X-Request-Foo uit het oorspronkelijke verzoek

13、RemoveResponseHeader GatewayFilter Factory

Om een header voor het oorspronkelijke antwoord te verwijderen, configureer je een voorbeeld:


Verwijder de response-header genaamd X-Request-Foo uit het oorspronkelijke antwoord

14、RewritePath GatewayFilter Factory

Het oorspronkelijke verzoekpad overschrijven met een reguliere expressie, configuratievoorbeeld:


Deze configuratie maakt toegang tot /foo/bar mogelijk om het pad naar /bar te herschrijven en door te sturen, dat wil zeggen doorgestuurd naar https://example.org/bar。 Let op dat vanwege de YAML-syntaxis $\ in plaats van $ moet worden gebruikt

15、RewriteResponseHeader GatewayFilter Factory

Herschrijf een header in de originele reactie, configuratievoorbeeld:


Het belang van deze configuratie is dat als de waarde van X-Response-Foo in de responsheader /42?user=ford&password=omg!what&flag=true is, deze wordt herschreven naar /42?user=ford&password=***&flag=true volgens de geconfigureerde waarde, dat wil zeggen, password=omg!what wordt herschreven naar password=***

16、SaveSession GatewayFilter Factory

Voordat je het verzoek doorstuurt, handhaaf je de WebSession::save-operatie, configuratievoorbeeld:


Het wordt voornamelijk gebruikt voor uitgestelde gegevensopslag (data wordt niet direct opgeslagen) zoals Spring Session, en wil ervoor zorgen dat de sessiestatus wordt opgeslagen voordat het verzoek wordt doorgestuurd. Als je Spring Secutiry integreert in Spring Session en wilt zorgen dat alle beveiligingsinformatie naar downstream-machines wordt verzonden, moet je dit filter configureren.

17、secureHeaders GatewayFilter Factory

De secureHeaders-filterfabriek is voornamelijk gebaseerd op de aanbevelingen in deze blog, waarbij een reeks response headers wordt toegevoegd die een beveiligingsrol spelen in de oorspronkelijke reactie. Standaard worden de volgende Headers (inclusief waarden) toegevoegd:


  • 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


Als je de waarden van deze headers wilt aanpassen, moet je de bijbehorende achtervoegsels van deze headers gebruiken, als volgt:

  • xss-protection-header
  • streng-transport-beveiliging
  • Frame-opties
  • Inhoudstype-opties
  • Verwijzingsbeleid
  • Inhoud-Beveiligingsbeleid
  • Downloadopties
  • toegestaan-cross-domein-beleidslijnen


Configuratievoorbeeld:


Als je bepaalde headers wilt uitschakelen, kun je de volgende configuratie gebruiken:

18、SetPath GatewayFilter Factory

Pas het oorspronkelijke verzoekpad aan en configureer een voorbeeld:


Deze configuratie zorgt ervoor dat het wordt doorgestuurd naar ${GATEWAY_URL}/foo/bar wanneer het wordt geopendhttps://example.org/bar , dat wil zeggen, de oorspronkelijke /foo/bar is veranderd in /bar

19、SetResponseHeader GatewayFilter Factory

Wijzig de waarde van een header in de oorspronkelijke reactie, configureer een voorbeeld:


Wijzig de waarde van X-Response-Foo in het oorspronkelijke antwoord op Bar

20、SetStatus GatewayFilter Factory

Wijzig de statuscode van de oorspronkelijke reactie, configuratievoorbeeld:


De waarde van SetStatusd kan een getal of een string zijn. Maar het moet wel de waarde zijn in de Spring HttpStatus enumeratieklasse. Beide bovenstaande configuraties kunnen de HTTP-statuscode 401 teruggeven.

21、StripPrefix GatewayFilter Factory

Voor het afkappen van het pad van het oorspronkelijke verzoek, configuratievoorbeeld:


Zoals te zien is in de bovenstaande configuratie, als het gevraagde pad /name/bar/foo is, wordt het afgekapt naar /foo en doorgestuurd, dat wil zeggen, 2 paden worden afgekapt.

22、Retry GatewayFilter Factory

Probeer opnieuw voor verschillende reacties, bijvoorbeeld voor HTTP-statuscodes, configuratievoorbeeld:


De volgende parameters kunnen worden geconfigureerd:

  • Herkansingen: Het aantal herpogingen
  • Statuss: De statuscode die opnieuw geprobeerd moet worden, ingesteld in org.springframework.http.Http.HttpStatus
  • methoden: De aanvraagmethode die opnieuw geprobeerd moet worden, met een waarde in org.springframework.http.Http.HttpMethod
  • series:HTTP statuscodesequentie, met een waarde in org.springframework.http.HttpStatus.Series


23、RequestSize GatewayFilter Factory

Stel de grootte in van het maximale aantal toegestane verzoekpakketten dat ontvangen mag worden, configuratievoorbeeld:


Als de grootte van het verzoekpakket de ingestelde waarde overschrijdt, wordt een 413 Payload Too Large geretourneerd samen met een errorMessage

24、Modify Request Body GatewayFilter Factory

Wijzig de inhoud van de oorspronkelijke requestbody voordat het verzoek wordt doorgestuurd; de filterfabriek kan alleen per code worden geconfigureerd, niet in het configuratiebestand. Codevoorbeeld:


Tips: Deze filterfabriek is in BETA-staat en de API kan in de toekomst veranderen.Gebruik de productieomgeving met voorzichtigheid

25、Modify Response Body GatewayFilter Factory

De filterfabriek kan ook worden gebruikt om de inhoud van de oorspronkelijke responsinhoud te wijzigen, en de filterfabriek kan alleen per code worden geconfigureerd, niet in het configuratiebestand. Codevoorbeeld:


Tips: Deze filterfabriek is in BETA-toestand, de API kan in de toekomst veranderen, gebruik hem met voorzichtigheid in de productieomgeving

26、Default Filters

Default Filters wordt gebruikt om een filterfabriek toe te voegen aan alle routes, dat wil zeggen, om door te latenHet filter, fabrieksgeconfigureerd door het Default Filter, wordt toegepast op alle routes。 Configuratievoorbeeld:


(Einde)




Vorig:Docker-logs vullen schijven en datamigratie
Volgend:Java dynamisch gesplitste SQL-instructies voorkomt database-injectie
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com