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:
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)
|