Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 9128|Svar: 0

[Kilde] Filterfabrikker indbygget i Spring Cloud Gateway

[Kopier link]
Opslået på 07/02/2022 13.36.49 | | |
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:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
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)




Tidligere:Docker-logs fylder diskene og datamigreringen
Næste:Java dynamisk sammensatte SQL-sætninger forhindrer databaseinjektion
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com