Indbygget filterfabrik
Her er en simpel tabel over alle filterfabrikkerne, der er indbygget i Spring Cloud Gateway, som ikke er særlig detaljeret, men kan bruges som et hurtigt overblik. Som følger:
Filterfabrik | funktion | parameter | AddRequestHeader | Tilføj en header til den oprindelige anmodning | Headernavn og værdi | AddRequestParameter | Tilføj anmodningsparametre til den oprindelige anmodning | Parameternavn og værdi | AddResponseHeader | Tilføj en header til det oprindelige svar | Headernavn og værdi | DedupeResponseHeader | Afviser dubletværdier i responsheaderen | Headernavnet og deduplikeringsstrategien, der skal dedupliceres, skal deduplikeres | Hystrix | Indfør Hystrix' sikring af sikringen til ruten | Navnet på HystrixCommand | FallbackHeaders | Tilføj specifik undtagelsesinformation til anmodningsheaderen i fallbackUri'en | Headers navn | PrefixPath | Tilføj et præfiks til den oprindelige anmodningssti | Præfikssti | PreserveHostHeader | Tilføj en preserveHostHeader=true-egenskab til forespørgslen, som routingfilteret tjekker for at afgøre, om du vil sende den oprindelige Host | ikke | RequestRateLimiter | Brugt til at begrænse forespørgsler er throttling-algoritmen en token-bucket | keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus | OmdirigerTil | Omdiriger den oprindelige anmodning til den angivne URL | HTTP-statuskode og omdirigerings-URL | FjernHopByHopHeadersFilter | Fjern en række headers foreskrevet af IETF-organisationen til den oprindelige anmodning | Dette er aktiveret som standard, og du kan specificere, hvilke headers der kun skal slettes gennem konfigurationen | RemoveRequestHeader | Slet en header for den oprindelige anmodning | Header-navn | RemoveResponseHeader | Fjern en header for det oprindelige svar | Header-navn | RewritePath | Omskriv den oprindelige anmodningssti | Den oprindelige sti-regex og regexen af den omskrevne sti | RewriteResponseHeader | Omskriv en header i det oprindelige svar | Headernavn, regulært udtryk af værdi, omskrevet værdi | SaveSession | Håndhæv WebSession::save-operationen, før du videresender anmodningen | ikke | secureHeaders | Tilføj en række responsheaders, der fungerer som sikkerhed til det oprindelige svar | Ingen, du kan ændre værdierne af disse sikkerhedsresponsheaders | SetPath | Ændr den oprindelige anmodningssti | Modificeret sti | SetResponseHeader | Ændr værdien af en header i det oprindelige svar | Headernavn, den modificerede værdi | SetStatus | Ændr statuskoden på det oprindelige svar | HTTP-statuskoder, som kan være tal eller strenge | StripPræfiks | Bruges til at afkorte stien for den oprindelige anmodning | Brug tal til at angive antallet af stier, der skal afkortes | Prøv | Prøv igen for forskellige svar | Rettries 、Statuses、Methods、Series | RequestSize | Indstil størrelsen på de maksimale ønskede pakker, der må modtages. Hvis anmodningspakkestørrelsen overstiger den angivne værdi, returneres 413 Payload Too Large | Anmodningspakkestørrelsen er i bytes, og standardværdien er 5M | ModifiifyRequestBody | Ændr indholdet af den oprindelige anmodningskropp, før du videresender anmodningen | Indholdet i den ændrede anmodningstekst | ModifyResponseBody | Ændr indholdet af den oprindelige svartekst | Den modificerede responstekst | Standard | Tilføj filtre for alle ruter | Filterfabriksnavn og værdi |
Tips: Hver filterfabrik svarer til en implementeringsklasse, og disseNavnet på klassen skal ende med GatewayFilterFactoryDette er en konvention i Spring Cloud Gateway, for eksempel er implementeringsklassen, der svarer til AddRequestHeader, AddRequestHeaderGatewayFilterFactory. Venner, der er interesserede i kildekoden, kan sammensætte specifikke klassenavne efter denne regel for at finde implementeringskoden for disse indbyggede filterfabrikker.
1、AddRequestHeader GatewayFilter Factory
Tilføj en header til den oprindelige forespørgsel, konfigurationseksempel:
Tilføj et anmodningshoved kaldet X-Request-Foo med værdien Bar til den oprindelige anmodning
2、AddRequestParameter GatewayFilter Factory
Tilføj anmodningsparametre og værdier til den oprindelige forespørgsel, konfigurationseksempel:
Tilføj en parameter kaldet foo med værdien bar til den oprindelige forespørgsel, dvs.: foo=bar
3、AddResponseHeader GatewayFilter Factory
Tilføj en header til det oprindelige svar, konfigurationseksempel:
Tilføj et svar-header kaldet X-Request-Foo med værdien Bar til det oprindelige svar
4、DedupeResponseHeader GatewayFilter Factory
DedupeResponseHeader kan fjerne duplikerede værdier i responsheadere baseret på det konfigurerede headernavn og deduplikeringspolitik, som er en ny funktion fra Spring Cloud Greenwich SR2 og ikke kan bruges under denne version.
ViHvis CORS (Solving Cross-Domain) headeren er sat både på gatewayen og mikroservicen, og der ikke foretages nogen konfiguration, så opnås værdien af CORS-headeren ved at anmode om -> Gateway -> mikroservice, det vil være sådan her:
Du kan se, at værdierne af disse to headere er duplikerede; hvis du vil deduplikere værdierne af disse to headers, skal du bruge DedupeResponseHeader, konfigurationseksempel:
Deduplikeringsstrategi:
- RETAIN_FIRST: Standard, behold den første værdi
- RETAIN_LAST: Behold den sidste værdi
- RETAIN_UNIQUE: Behold alle unikke værdier i den rækkefølge, de først dukkede op
Hvis du vil have en mere omfattende forståelse af filterfabrikken, anbefales det at læse kildekoden for filterfabrikken, fordi kildekoden indeholder detaljerede noter og eksempler, som er bedre end den officielle dokumentation: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory
5、Hystrix GatewayFilter Factory
Introduktion af Hystrix' sikringssikring til ruter, konfigurationseksempel:
Hystrix er den første generation af fejltolerante komponenter i Spring Cloud, men den er gået i vedligeholdelsestilstand, og Hystrix vil blive fjernet af Spring Cloud i fremtiden og erstattet af Alibaba Sentinel/Resilience4J. Så denne artikel vil ikke gå i detaljer, hvis du er interesseret, kan du henvise til den officielle dokumentation: Hystrix GatewayFilter Factory
6、FallbackHeaders GatewayFilter Factory
Filterfabrikken beskrevet i det forrige afsnit understøtter også Hystrix og understøtter en konfigurationsparameter: fallbackUri, som bruges til at videresende anmodninger til en specifik URI, når en undtagelse opstår. FallbackHeaders-filterfabrikken kan tilføje en header, når en forespørgsel videresendes til URI'en, og værdien af denne header er den specifikke undtagelsesinformation. Konfigurationseksempel:
Jeg vil ikke gå i detaljer her, hvis du er interesseret, kan du henvise til den officielle dokumentation: FallbackHeaders GatewayFilter Factory
7、PrefixPath GatewayFilter Factory
Tilføj en præfikssti til den oprindelige anmodningssti, konfigurationseksempel:
Denne konfiguration gør besøget på ${GATEWAY_URL}/hello videresendt tilhttps://example.org/mypath/hello
8、PreserveHostHeader GatewayFilter Factory
Tilføj en preserveHostHeader=true-egenskab til forespørgslen, som routingfilteret tjekker for at afgøre, om den oprindelige Host Header skal sendes. Konfigurationseksempel:
Hvis den ikke er sat, vil headeren med navnet Host blive styret af Http-klienten
9、RequestRateLimiter GatewayFilter Factory
Den bruges til at begrænse forespørgsler, og throttling-algoritmen er en token-bucket. Konfigurationseksempel:
10、RedirectTo GatewayFilter Factory
Omdiriger den oprindelige anmodning til den angivne URL, konfigurationseksempel:
Denne konfiguration omdirigerer adgangen til ${GATEWAY_URL}/hello til https://acme.org/hello , og bær énLocation:http://acme.orgHeader, mens HTTP-statuskoden, der returnerer klienten, er 302
Noter:
HTTP-statuskoden bør være 3xx, f.eks. 301
URL'en skal være en legitim URL, der fungerer som værdien af lokationsheaderen
11、RemoveHopByHopHeadersFilter GatewayFilter Factory
For den oprindelige anmodning om at fjerne en række headers specificeret af IETF-organisationen, er de standard slettede headers som følger:
- Forbindelse
- Hold dig i live
- Proxy-autentificering
- Fuldmagtsautorisation
- TE
- Anhænger
- Overførselskodning
- Opgradere
Du kan angive, hvilke headers der kun slettes gennem konfigurationen, konfigurationseksempel:
12、RemoveRequestHeader GatewayFilter Factory
For at fjerne en header for den oprindelige forespørgsel, konfigurere et eksempel:
Fjern anmodningsheaderen X-Request-Foo fra den oprindelige anmodning
13、RemoveResponseHeader GatewayFilter Factory
For at fjerne en header for det oprindelige svar, konfigurere et eksempel:
Fjern svarheaderen ved navn X-Request-Foo fra det oprindelige svar
14、RewritePath GatewayFilter Factory
Overskrift af den oprindelige anmodningssti med et regulært udtryk, konfigurationseksempel:
Denne konfiguration tillader adgang til /foo/bar for at omskrive stien til /bar og videresende den, dvs. videresende til https://example.org/bar。 Bemærk, at på grund af YAML-syntaksen skal $\ bruges i stedet for $
15、RewriteResponseHeader GatewayFilter Factory
Omskriv en header i det oprindelige svar, konfigurationseksempel:
Betydningen af denne konfiguration er, at hvis værdien af X-Response-Foo i responsheaderen er /42?user=ford&password=omg!what&flag=true, så vil den blive omskrevet til /42?user=ford&password=***&flag=true ifølge den konfigurerede værdi, det vil sige, password=omg!what vil blive omskrevet til password=***
16、SaveSession GatewayFilter Factory
Før du videresender anmodningen, skal du håndhæve WebSession::save-operationen, konfigurationseksempel:
Den bruges primært til udskudt datalagring (data lagres ikke med det samme) som Spring Session, og ønsker at sikre, at sessionstilstanden gemmes, før anmodningen videresendes. Hvis du integrerer Spring Secutiry i Spring Session og vil sikre, at al sikkerhedsinformation overføres til downstream-maskiner, skal du konfigurere dette filter.
17、secureHeaders GatewayFilter Factory
SecureHeaders-filterfabrikken er hovedsageligt baseret på anbefalingerne i denne blog og tilføjer en række svarheadere, der spiller en sikkerhedsrolle i det oprindelige svar. Som standard tilføjes følgende Headers (inklusive værdier):
- 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
Hvis du vil ændre værdierne af disse headers, skal du bruge de tilsvarende suffikser af disse headers, som følger:
- xss-protection-header
- Streng transport-sikkerhed
- Ramme-muligheder
- indholdstype-muligheder
- Henvisningspolitik
- Indholds-sikkerhedspolitik
- Download-muligheder
- tilladte-tværdomæne-politikker
Konfigurationseksempel:
Hvis du vil deaktivere visse headers, kan du bruge følgende konfiguration:
18、SetPath GatewayFilter Factory
Ændr den oprindelige anmodningssti og konfigurér et eksempel:
Denne konfiguration får den til at videresende til ${GATEWAY_URL}/foo/bar, når den tilgåshttps://example.org/bar , det vil sige, at den oprindelige /foo/bar blev ændret til /bar
19、SetResponseHeader GatewayFilter Factory
Ændr værdien af en header i det oprindelige svar, konfigurér et eksempel:
Ændr værdien af X-Response-Foo i det oprindelige svar til Bar
20、SetStatus GatewayFilter Factory
Ændr statuskoden for det oprindelige svar, konfigurationseksempel:
Værdien af SetStatusd kan være enten et tal eller en streng. Men det må være værdien i Spring HttpStatus enumeration-klassen. Begge ovenstående konfigurationer kan returnere HTTP-statuskoden 401.
21、StripPrefix GatewayFilter Factory
For at afkorte stien for den oprindelige forespørgsel, konfigurationseksempel:
Som vist i ovenstående konfiguration, hvis den anmodede sti er /name/bar/foo, vil den blive trunkeret til /foo og videresendt, det vil sige, at 2 stier vil blive trunkeret.
22、Retry GatewayFilter Factory
Prøv igen for forskellige svar, f.eks. for HTTP-statuskoder, konfigurationseksempel:
Følgende parametre kan konfigureres:
- Omprøver: Antallet af forsøg
- statusser: Statuskoden, der skal prøves igen, sættes i org.springframework.http.Http.HttpStatus
- metoder: Den anmodningsmetode, der skal prøves igen, med en værdi i org.springframework.http.Http.HttpMethod
- series:HTTP statuskodesekvens, med en værdi i org.springframework.http.HttpHttpStatus.Series
23、RequestSize GatewayFilter Factory
Indstil størrelsen på det maksimale antal anmodningspakker, der må modtages, konfigurationseksempel:
Hvis anmodningspakkestørrelsen overstiger den indstillede værdi, returneres en 413 Payload Too Large sammen med en errorMessage
24、Modify Request Body GatewayFilter Factory
Ænder indholdet af den oprindelige anmodningskropp, før anmodningen videresendes; filterfabrikken kan kun konfigureres via kode, ikke i konfigurationsfilen. Kodeeksempel:
Tips: Denne filterfabrik er i BETA-tilstand, og API'en kan ændre sig i fremtiden.Brug venligst produktionsmiljøet med forsigtighed
25、Modify Response Body GatewayFilter Factory
Filterfabrikken kan også bruges til at ændre indholdet af den oprindelige svarkrop, og filterfabrikken kan kun konfigureres via kode, ikke i konfigurationsfilen. Kodeeksempel:
Tips: Denne filterfabrik er i BETA-tilstand, API'en kan ændre sig i fremtiden, brug den venligst med forsigtighed i produktionsmiljøet
26、Default Filters
Standardfiltre bruges til at tilføje en filterfabrik til alle ruter, det vil sige til at passereFilterfabrikken konfigureret af standardfilteret gælder for alle ruter。 Konfigurationseksempel:
(Slut)
|