Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 9128|Svar: 0

[Källa] Filterfabriker inbyggda i Spring Cloud Gateway

[Kopiera länk]
Publicerad på 2022-02-07 13:36:49 | | |
Inbyggd filterfabrik

Här är en enkel tabell över alla filterfabriker inbyggda i Spring Cloud Gateway, som inte är särskilt detaljerad, men kan användas som en snabb översikt. Följande följer:

Filterfabrik
funktion
parameter
AddRequestHeader
Lägg till en Header i den ursprungliga förfrågan
Headernamn och värde
AddRequestParameter
Lägg till förfråganparametrar till den ursprungliga förfrågan
Parameternamn och värde
AddResponseHeader
Lägg till en header till det ursprungliga svaret
Headernamn och värde
DedupeResponseHeader
Avvisar dubblettvärden i svarshuvudet
Headernamnet och dedupliceringsstrategin som behöver dedupliceras
Hystrix
Introducera Hystrix säkringsskydd för rutten
Namnet HystrixCommand
FallbackHeaders
Lägg till specifik undantagsinformation i begäransteckningen för fallbackUri
Rubrikens namn
PrefixPath
Lägg till ett prefix på den ursprungliga förfrågningsvägen
Prefixväg
PreserveHostHeader
Lägg till en egenskap preserveHostHeader=true till förfrågan, som routingfiltret kontrollerar för att avgöra om du vill skicka den ursprungliga värden
inte
RequestRateLimiter
Används för att strypa förfrågningar är strypningsalgoritmen en tokenbucket
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
Omdirigera till
Omdirigera den ursprungliga förfrågan till den angivna URL:en
HTTP-statuskod och omdirigerings-URL
Ta bortHopByHopHeadersFilter
Ta bort en serie headers som föreskrivits av IETF-organisationen för den ursprungliga förfrågan
Detta är aktiverat som standard, och du kan ange vilka headers som bara ska tas bort via konfigurationen
RemoveRequestHeader
Ta bort en header för den ursprungliga förfrågan
Headernamn
RemoveResponseHeader
Ta bort en header för det ursprungliga svaret
Headernamn
RewritePath
Skriv om den ursprungliga begäransökvägen
Den ursprungliga vägens regex och regexen av den omskrivna vägen
RewriteResponseHeader
Skriv om en header i det ursprungliga svaret
Headernamn, reguljärt uttryck av värde, omskrivet värde
SaveSession
Upprätthåll WebSession::save-operationen innan du vidarebefordrar förfrågan
inte
secureHeaders
Lägg till en serie svarshuvuden som fungerar som säkerhet till det ursprungliga svaret
Inga, du kan ändra värdena på dessa säkerhetssvarshuvuden
SetPath
Ändra den ursprungliga begäransökvägen
Modifierad väg
SetResponseHeader
Ändra värdet på en header i det ursprungliga svaret
Headernamn, det modifierade värdet
SetStatus
Ändra statuskoden för det ursprungliga svaret
HTTP-statuskoder, som kan vara siffror eller strängar
StripPrefix
Används för att trunkera vägen för den ursprungliga förfrågan
Använd siffror för att ange antalet banor som ska trunkeras
Igen
Försök igen för olika svar
Rettries 、Statuses、Methods、Series
RequestSize
Ställ in storleken på de maximala begärda paket som får tas emot. Om begäran-paketets storlek överstiger det angivna värdet returneras 413 Payload Too Large
Begäran om paketstorlek är i byte och standardvärdet är 5M
ModifiifyRequestBody
Ändra innehållet i den ursprungliga förfrågan, innan du vidarebefordrar förfrågan
Innehållet i den modifierade förfrågningskroppen
ModifieraResponsKropp
Modifiera innehållet i den ursprungliga svarskroppen
Det modifierade svarsinnehållet
Standard
Lägg till filter för alla rutter
Filterfabrikens namn och värde

Tips: Varje filterfabrik motsvarar en implementeringsklass, och dessaKlassens namn måste sluta på GatewayFilterFactoryDetta är en konvention i Spring Cloud Gateway, till exempel är implementationsklassen som motsvarar AddRequestHeader AddRequestHeaderGatewayFilterFactory. Vänner som är intresserade av källkoden kan skarva specifika klassnamn enligt denna regel för att hitta implementeringskoden för dessa inbyggda filterfabriker.

1、AddRequestHeader GatewayFilter Factory

Lägg till en header i den ursprungliga förfrågan, konfigurationsexempel:


Lägg till en begäransökningsheader med namnet X-Request-Foo med värdet Bar till den ursprungliga förfrågan

2、AddRequestParameter GatewayFilter Factory

Lägg till förfrågningsparametrar och värden till den ursprungliga förfrågan, konfigurationsexempel:


Lägg till en parameter som heter foo med värdet bar till den ursprungliga begäran, dvs: foo=bar

3、AddResponseHeader GatewayFilter Factory

Lägg till en header till det ursprungliga svaret, konfigurationsexempel:


Lägg till en svarsheader som heter X-Request-Foo med värdet Bar till det ursprungliga svaret

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader kan ta bort dubblettvärden i svarshuvuden baserat på det konfigurerade huvudnamnet och dedupliceringspolicyn, vilket är en ny funktion som tillhandahålls av Spring Cloud Greenwich SR2 och inte kan användas under denna version.

ViOm CORS (Solving Cross-Domain) header är inställd både på gatewayen och mikrotjänsten, och ingen konfiguration görs, så erhålls värdet på CORS-headern genom att begära -> Gateway -> mikrotjänst, det kommer att se ut så här:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Du kan se att värdena för dessa två huvuden dupliceras, om du vill deduplicera värdena för dessa två huvuden behöver du använda DedupeResponseHeader, konfigurationsexempel:

Dedupliceringsstrategi:

  • RETAIN_FIRST: Standard, behåll det första värdet
  • RETAIN_LAST: Behåll det sista värdet
  • RETAIN_UNIQUE: Behåll alla unika värden i den ordning de först dök upp


Om du vill få en mer omfattande förståelse av filterfabriken rekommenderas det att läsa källkoden för filterfabriken, eftersom källkoden innehåller detaljerade anteckningar och exempel, vilket är bättre än den officiella dokumentationen: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Hystrix GatewayFilter Factory

Vi introducerar Hystrix säkringsskydd för rutter, konfigurationsexempel:


Hystrix är den första generationen feltoleranta komponenter i Spring Cloud, men den har gått in i underhållsläge, och Hystrix kommer att tas bort av Spring Cloud i framtiden, ersättas av Alibaba Sentinel/Resilience4J. Så den här artikeln går inte in på detaljer, om du är intresserad kan du hänvisa till den officiella dokumentationen: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

Filterfabriken som beskrivs i föregående avsnitt stöder också Hystrix och stöder en konfigurationsparameter: fallbackUri, som används för att vidarebefordra förfrågningar till en specifik URI när ett undantag inträffar. FallbackHeaders-filterfabriken kan lägga till en header när en begäran vidarebefordras till URI:n, och värdet på denna header är den specifika undantagsinformationen. Konfigurationsexempel:


Jag går inte in på detaljer här, om du är intresserad kan du hänvisa till den officiella dokumentationen: FallbackHeaders GatewayFilter Factory

7、PrefixPath GatewayFilter Factory

Lägg till en prefix-väg till den ursprungliga förfrågningsvägen, konfigurationsexempel:


Denna konfiguration gör att besöket till ${GATEWAY_URL}/hello vidarebefordrats tillhttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilter Factory

Lägg till en egenskap preserveHostHeader=true till begäran, som routingfiltret kontrollerar för att avgöra om den ursprungliga Host Header ska skickas. Konfigurationsexempel:


Om den inte är inställd, kommer headern Host att styras av Http-klienten

9、RequestRateLimiter GatewayFilter Factory

Den används för att strypa förfrågningar, och strypningsalgoritmen är en tokenbucket. Konfigurationsexempel:


10、RedirectTo GatewayFilter Factory

Omdirigera den ursprungliga förfrågan till den angivna URL:en, konfigurationsexempel:


Denna konfiguration omdirigerar åtkomst till ${GATEWAY_URL}/hello till https://acme.org/hello , och bär enLocation:http://acme.orgHeader, medan HTTP-statuskoden som returnerar klienten är 302

Anteckningar:

HTTP-statuskoden bör vara 3xx, t.ex. 301

URL:en måste vara en legitim URL som fungerar som värdet på platshuvudet

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

För den ursprungliga begäran om att ta bort en serie headers specificerade av IETF-organisationen är de standard raderade headers följande:


  • Samband
  • Håll-Levande
  • Proxy-autentisering
  • Fullmaktsauktorisation
  • TE
  • Trailer
  • Överföringskodning
  • Uppgradera


Du kan ange vilka headers som endast tas bort genom konfigurationen, konfigurationsexempel:


12、RemoveRequestHeader GatewayFilter Factory

För att ta bort en header för den ursprungliga förfrågan, konfigurera ett exempel:


Ta bort begäranstecknet X-Request-Foo från den ursprungliga förfrågan

13、RemoveResponseHeader GatewayFilter Factory

För att ta bort en header för det ursprungliga svaret, konfigurera ett exempel:


Ta bort svarshuvudet som heter X-Request-Foo från det ursprungliga svaret

14、RewritePath GatewayFilter Factory

Att åsidosätta den ursprungliga begärelsebanan med ett reguljärt uttryck, konfigurationsexempel:


Denna konfiguration tillåter åtkomst till /foo/bar för att skriva om sökvägen till /bar och vidarebefordra den, dvs. vidarebefordra till https://example.org/bar。 Observera att på grund av YAML-syntaxen måste $\ användas istället för $

15、RewriteResponseHeader GatewayFilter Factory

Skriv om en header i det ursprungliga svaret, konfigurationsexempel:


Betydelsen av denna konfiguration är att om värdet av X-Response-Foo i svarshuvudet är /42?user=ford&password=omg!what&flag=true, så kommer det att skrivas om till /42?user=ford&password=***&flag=true enligt det konfigurerade värdet, det vill säga password=omg!what kommer att skrivas om till password=***

16、SaveSession GatewayFilter Factory

Innan du vidarebefordrar begäran, framhåll WebSession::save-operationen, konfigurationsexempel:


Den används främst för uppskjuten datalagring (data lagras inte omedelbart) som Spring Session, och vill säkerställa att sessionstillståndet sparas innan förfrågan vidarebefordras. Om du integrerar Spring Secutiry i Spring Session och vill säkerställa att all säkerhetsinformation överförs till nedströmsmaskiner, behöver du konfigurera detta filter.

17、secureHeaders GatewayFilter Factory

Filterfabriken för secureHeaders baseras främst på rekommendationerna i denna blogg och lägger till en serie svarshuvuden som spelar en säkerhetsroll i det ursprungliga svaret. Som standard läggs följande huvuden (inklusive värden) till:


  • 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


Om du vill ändra värdena för dessa headers behöver du använda motsvarande suffix för dessa headers, enligt följande:

  • xss-protection-header
  • strikt-transport-säkerhet
  • Ramval
  • innehållstyp-val
  • Hänvisningspolicy
  • Innehålls-säkerhetspolicy
  • Nedladdningsalternativ
  • tillåtna-tvärdomänpolicyer


Konfigurationsexempel:


Om du vill inaktivera vissa headers kan du använda följande konfiguration:

18、SetPath GatewayFilter Factory

Ändra den ursprungliga förfrågningsvägen och konfigurera ett exempel:


Denna konfiguration gör att den vidarebefordras till ${GATEWAY_URL}/foo/bar när den nåshttps://example.org/bar , det vill säga, den ursprungliga /foo/bar ändrades till /bar

19、SetResponseHeader GatewayFilter Factory

Ändra värdet på en header i det ursprungliga svaret, konfigurera ett exempel:


Modifiera värdet på X-Response-Foo i det ursprungliga svaret till Bar

20、SetStatus GatewayFilter Factory

Ändra statuskoden för det ursprungliga svaret, konfigurationsexempel:


Värdet av SetStatusd kan vara antingen ett tal eller en sträng. Men det måste vara värdet i Spring HttpStatus enumeration-klassen. Båda ovanstående konfigurationer kan returnera HTTP-statuskoden 401.

21、StripPrefix GatewayFilter Factory

För att trunkera vägen för den ursprungliga förfrågan, konfigurationsexempel:


Som visas i ovanstående konfiguration, om den begärda vägen är /name/bar/foo, kommer den att trunkeras till /foo och vidarebefordras, det vill säga att 2 vägar kommer att trunkeras.

22、Retry GatewayFilter Factory

Försök igen för olika svar, t.ex. för HTTP-statuskoder, konfigurationsexempel:


Följande parametrar kan konfigureras:

  • Omförsök: Antalet omförsök
  • statuses: Statuskoden som behöver prövas igen, ställd i org.springframework.http.Http.HttpStatus
  • metoder: Förfrågningsmetoden som behöver prövas igen, med ett värde i org.springframework.http.Http.HttpMethod
  • series:HTTP statuskodsekvens, med ett värde i org.springframework.http.Http.HttpStatus.Series


23、RequestSize GatewayFilter Factory

Sätt storleken på de maximala begäranarpaket som får tas emot, konfigurationsexempel:


Om begäran-paketets storlek överskrider det inställda värdet returneras en 413 Payload Too Large tillsammans med ett errorMessage

24、Modify Request Body GatewayFilter Factory

Ändra innehållet i den ursprungliga förfrågan, kroppen skickas innan begäran vidarebefordras, filterfabriken kan endast konfigureras med kod, inte i konfigurationsfilen. Kodexempel:


Tips: Denna filterfabrik är i BETA-läge och API:et kan ändras i framtiden.Vänligen använd produktionsmiljön med försiktighet

25、Modify Response Body GatewayFilter Factory

Filterfabriken kan också användas för att ändra innehållet i den ursprungliga svarskroppen, och filterfabriken kan endast konfigureras med kod, inte i konfigurationsfilen. Kodexempel:


Tips: Denna filterfabrik är i BETA-tillstånd, API:et kan ändras i framtiden, använd det med försiktighet i produktionsmiljön

26、Default Filters

Standardfilter används för att lägga till en filterfabrik på alla rutter, det vill säga för att passeraFilterfabriksinställningarna som standardfiltret konfigurerar gäller för alla rutter。 Konfigurationsexempel:


(Slut)




Föregående:Docker-loggar fyller diskar och datamigrering
Nästa:Java dynamiskt sammanlänkade SQL-satser förhindrar databasinjektion
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com