Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 9128|Svare: 0

[Kilde] Filterfabrikker bygget inn i Spring Cloud Gateway

[Kopier lenke]
Publisert på 07.02.2022 13:36:49 | | |
Innebygd filterfabrikk

Her er en enkel tabell over alle filterfabrikkene som er bygget inn i Spring Cloud Gateway, som ikke er veldig detaljert, men kan brukes som en rask oversikt. Som følger:

Filterfabrikk
funksjon
parameter
AddRequestHeader
Legg til en overskrift i den opprinnelige forespørselen
Headernavn og verdi
AddRequestParameter
Legg til forespørselsparametere til den opprinnelige forespørselen
Parameternavn og verdi
AddResponseHeader
Legg til en header i det opprinnelige svaret
Headernavn og verdi
DedupeResponseHeader
Avviser dupliserte verdier i responsheaderen
Header-navnet og dedupliseringsstrategien som må dedupliseres
Hystrix
Innfør Hystrix' sikringssikring for ruten
Navnet HystrixCommand
FallbackHeaders
Legg til spesifikk unntaksinformasjon i forespørselsheaderen til fallbackUri
Overskriftens navn
PrefixPath
Legg til et prefiks på den opprinnelige forespørselsstien
Prefikssti
PreserveHostHeader
Legg til en preserveHostHeader=true-egenskap til forespørselen, som rutingsfilteret sjekker for å avgjøre om du vil sende den opprinnelige verten
ikke
RequestRateLimiter
Brukt for å strupe forespørsler, er throttling-algoritmen en tokenbøtte
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
OmdirigerTil
Omdiriger den opprinnelige forespørselen til den angitte URL-en
HTTP-statuskode og omdirigerings-URL
FjernHopByHopHeadersFilter
Fjern en serie headere foreskrevet av IETF-organisasjonen for den opprinnelige forespørselen
Dette er aktivert som standard, og du kan spesifisere hvilke headere som skal slettes gjennom konfigurasjonen
RemoveRequestHeader
Slett en header for den opprinnelige forespørselen
Header-navn
RemoveResponseHeader
Fjern en header for det opprinnelige svaret
Header-navn
RewritePath
Skriv om den opprinnelige forespørselsstien
Den opprinnelige sti-regexen og regexen til den omskrevne stien
RewriteResponseHeader
Skriv om en header i det opprinnelige svaret
Header-navn, regulært uttrykk av verdi, omskrevet verdi
SaveSession
Håndhev WebSession::save-operasjonen før du videresender forespørselen
ikke
secureHeaders
Legg til en serie svarheadere som fungerer som sikkerhet til det opprinnelige svaret
Ingen, du kan endre verdiene til disse sikkerhetsresponshodene
SetPath
Endre den opprinnelige forespørselsstien
Modifisert sti
SetResponseHeader
Endre verdien til en header i det opprinnelige svaret
Header-navn, den modifiserte verdien
SetStatus
Endre statuskoden til det opprinnelige svaret
HTTP-statuskoder, som kan være tall eller strenger
StripPrefiks
Brukt til å forkorte stien til den opprinnelige forespørselen
Bruk tall for å angi antall stier som skal avkortes
Prøve
Prøv igjen for ulike svar
Retries 、Statuses、Methods、Series
RequestSize
Sett størrelsen på de maksimale forespurte pakkene som er tillatt å bli mottatt. Hvis forespørselspakkestørrelsen overstiger den satte verdien, returneres 413 Payload Too Large
Forespørselspakkestørrelsen er i bytes, og standardverdien er 5M
ModificeRequestBody
Endre innholdet i den opprinnelige forespørselsdelen før du videresender forespørselen
Innholdet i den modifiserte forespørselsdelen
ModifiserResponsKropp
Endre innholdet i den opprinnelige responsdelen
Innholdet i den modifiserte responsdelen
Standard
Legg til filtre for alle ruter
Filterfabrikkens navn og verdi

Tips: Hver filterfabrikk tilsvarer en implementeringsklasse, og disseNavnet på klassen må avsluttes med GatewayFilterFactoryDette er en konvensjon i Spring Cloud Gateway, for eksempel er implementasjonsklassen som tilsvarer AddRequestHeader AddRequestHeaderGatewayFilterFactory. Venner som er interessert i kildekoden kan spleise spesifikke klassenavn i henhold til denne regelen for å finne implementasjonskoden til disse innebygde filterfabrikkene.

1、AddRequestHeader GatewayFilter Factory

Legg til en header i den opprinnelige forespørselen, konfigurasjonseksempel:


Legg til en forespørselsheader kalt X-Request-Foo med verdien Bar til den opprinnelige forespørselen

2、AddRequestParameter GatewayFilter Factory

Legg til forespørselsparametere og verdier til den opprinnelige forespørselen, konfigurasjonseksempel:


Legg til en parameter kalt foo med verdien bar til den opprinnelige forespørselen, altså: foo=bar

3、AddResponseHeader GatewayFilter Factory

Legg til en header i det opprinnelige svaret, konfigurasjonseksempel:


Legg til en responsheader kalt X-Request-Foo med verdien Bar til det opprinnelige svaret

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader kan fjerne dupliserte verdier i responsheadere basert på det konfigurerte headernavnet og dedupliseringspolicyen, som er en ny funksjon fra Spring Cloud Greenwich SR2 og ikke kan brukes under denne versjonen.

ViHvis CORS (Solving Cross-Domain)-headeren er satt både på gatewayen og mikrotjenesten, og ingen konfigurasjon gjøres, oppnås verdien av CORS-headeren ved å be om -> Gateway -> mikrotjenesten, det vil være slik:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Du kan se at verdiene til disse to headerne er dupliserte, hvis du vil deduplisere verdiene til disse to headerne, må du bruke DedupeResponseHeader, konfigurasjonseksempel:

Dedupliseringsstrategi:

  • RETAIN_FIRST: Standard, behold den første verdien
  • RETAIN_LAST: Behold siste verdi
  • RETAIN_UNIQUE: Behold alle unike verdier i den rekkefølgen de først dukket opp


Hvis du ønsker å få en mer omfattende forståelse av filterfabrikken, anbefales det å lese kildekoden til filterfabrikken, fordi kildekoden inneholder detaljerte notater og eksempler, noe som er bedre enn den offisielle dokumentasjonen: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Hystrix GatewayFilter Factory

Vi introduserer Hystrix' sikringssikring for ruter, konfigurasjonseksempel:


Hystrix er den første generasjonen feiltolerante komponenter i Spring Cloud, men den har gått inn i vedlikeholdsmodus, og Hystrix vil bli fjernet av Spring Cloud i fremtiden, erstattet av Alibaba Sentinel/Resilience4J. Så denne artikkelen vil ikke gå i detalj, hvis du er interessert, kan du se den offisielle dokumentasjonen: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

Filterfabrikken beskrevet i forrige avsnitt støtter også Hystrix og støtter en konfigurasjonsparameter: fallbackUri, som brukes til å videresende forespørsler til en spesifikk URI når et unntak oppstår. FallbackHeaders-filterfabrikken kan legge til en header når en forespørsel videresendes til URI, og verdien av denne headeren er den spesifikke unntaksinformasjonen. Konfigurasjonseksempel:


Jeg skal ikke gå i detalj her, hvis du er interessert kan du se i den offisielle dokumentasjonen: FallbackHeaders GatewayFilter Factory

7、PrefixPath GatewayFilter Factory

Legg til en prefikssti til den opprinnelige forespørselsstien, konfigurasjonseksempel:


Denne konfigurasjonen gjør at besøket til ${GATEWAY_URL}/hello videresendes tilhttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilter Factory

Legg til en preserveHostHeader=true-egenskap til forespørselen, som rutingsfilteret sjekker for å avgjøre om den opprinnelige Host Header skal sendes. Konfigurasjonseksempel:


Hvis den ikke er satt, vil headeren kalt Host bli kontrollert av Http-klienten

9、RequestRateLimiter GatewayFilter Factory

Den brukes til å strupe forespørsler, og throttling-algoritmen er en tokenbøtte. Konfigurasjonseksempel:


10、RedirectTo GatewayFilter Factory

Omdiriger den opprinnelige forespørselen til den angitte URL-en, konfigurasjonseksempel:


Denne konfigurasjonen gjør at tilgangen til ${GATEWAY_URL}/hello omdirigeres til https://acme.org/hello , og bær énLocation:http://acme.orgHeader, mens HTTP-statuskoden som returnerer klienten er 302

Notater:

HTTP-statuskoden skal være 3xx, f.eks. 301

URL-en må være en legitim URL som fungerer som verdien til lokasjonsheaderen

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

For den opprinnelige forespørselen om å fjerne en serie headers spesifisert av IETF-organisasjonen, er de standard slettede headerne som følger:


  • Forbindelse
  • Hold deg i live
  • Proxy-autentisering
  • Fullmaktsautorisasjon
  • TE
  • Tilhenger
  • Overføringskoding
  • Oppgradere


Du kan spesifisere hvilke headers som kun slettes gjennom konfigurasjonen, konfigurasjonseksempel:


12、RemoveRequestHeader GatewayFilter Factory

For å fjerne en header for den opprinnelige forespørselen, konfigurere et eksempel:


Fjern forespørselsheaderen kalt X-Request-Foo fra den opprinnelige forespørselen

13、RemoveResponseHeader GatewayFilter Factory

For å fjerne en header for det opprinnelige svaret, konfigurere et eksempel:


Fjern svarheaderen kalt X-Request-Foo fra det opprinnelige svaret

14、RewritePath GatewayFilter Factory

Overstyring av den opprinnelige forespørselsstien med et regulært uttrykk, konfigurasjonseksempel:


Denne konfigurasjonen gir tilgang til /foo/bar for å omskrive banen til /bar og videresende den, altså videresende til https://example.org/bar。 Merk at på grunn av YAML-syntaksen må $\ brukes i stedet for $

15、RewriteResponseHeader GatewayFilter Factory

Skriv om en header i det opprinnelige svaret, konfigurasjonseksempel:


Betydningen av denne konfigurasjonen er at hvis verdien til X-Response-Foo i responsheaderen er /42?user=ford&password=omg!what&flag=true, vil den bli omskrevet til /42?user=ford&password=***&flag=true i henhold til den konfigurerte verdien, det vil si password=omg!what vil bli omskrevet til password=***

16、SaveSession GatewayFilter Factory

Før du videresender forespørselen, håndhev WebSession::save-operasjonen, konfigurasjonseksempel:


Den brukes hovedsakelig til utsatt datalagring (data lagres ikke umiddelbart) som Spring Session, og ønsker å sikre at sesjonstilstanden lagres før forespørselen videresendes. Hvis du integrerer Spring Secutiry i Spring Session og vil sikre at all sikkerhetsinformasjon overføres til nedstrøms maskiner, må du konfigurere dette filteret.

17、secureHeaders GatewayFilter Factory

SecureHeaders-filterfabrikken er hovedsakelig basert på anbefalingene i denne bloggen, og legger til en serie svarheadere som spiller en sikkerhetsrolle i det opprinnelige svaret. Som standard legges følgende overskrifter (inkludert verdier) til:


  • 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 endre verdiene til disse headerne, må du bruke de tilsvarende suffiksene til disse headerne, som følger:

  • xss-protection-header
  • streng-transport-sikkerhet
  • Rammevalg
  • innholdstype-valg
  • Henvisningspolicy
  • Innholdssikkerhetspolicy
  • Nedlastingsalternativer
  • tillatte-tverrdomene-policyer


Konfigurasjonseksempel:


Hvis du vil deaktivere visse headers, kan du bruke følgende konfigurasjon:

18、SetPath GatewayFilter Factory

Endre den opprinnelige forespørselsstien og konfigurer et eksempel:


Denne konfigurasjonen gjør at den videresendes til ${GATEWAY_URL}/foo/bar når den åpneshttps://example.org/bar , det vil si at den opprinnelige /foo/bar ble endret til /bar

19、SetResponseHeader GatewayFilter Factory

Endre verdien til en header i det opprinnelige svaret, og konfigurer et eksempel:


Endre verdien av X-Response-Foo i det opprinnelige svaret til Bar

20、SetStatus GatewayFilter Factory

Endre statuskoden til det opprinnelige svaret, konfigurasjonseksempel:


Verdien til SetStatusd kan være enten et tall eller en streng. Men det må være verdien i Spring HttpStatus-enumerasjonsklassen. Begge de ovennevnte konfigurasjonene kan returnere HTTP-statuskode 401.

21、StripPrefix GatewayFilter Factory

For å avkorte stien til den opprinnelige forespørselen, konfigurasjonseksempel:


Som vist i konfigurasjonen ovenfor, hvis den forespurte stien er /name/bar/foo, vil den bli avkortet til /foo og videresendt, det vil si at 2 stier vil bli avkortet.

22、Retry GatewayFilter Factory

Prøv på nytt for ulike svar, f.eks. for HTTP-statuskoder, konfigurasjonseksempel:


Følgende parametere kan konfigureres:

  • Omprøver: Antall forsøk
  • statuses: Statuskoden som må prøves på nytt, satt i org.springframework.http.Http.HttpStatus
  • metoder: Forespørselsmetoden som må prøves på nytt, med en verdi i org.springframework.http.Http.HttpMethod
  • series:HTTP statuskodesekvens, med en verdi i org.springframework.http.HttpStatus.Series


23、RequestSize GatewayFilter Factory

Sett størrelsen på maksimalt antall forespørslingspakker som kan mottas, konfigurasjonseksempel:


Hvis størrelsen på forespørselspakken overstiger den satte verdien, returneres en 413 Payload Too Large sammen med en errorMessage

24、Modify Request Body GatewayFilter Factory

Endre innholdet i den opprinnelige forespørselsdelen før du videresender forespørselen, filterfabrikken kan kun konfigureres med kode, ikke i konfigurasjonsfilen. Kodeeksempel:


Tips: Denne filterfabrikken er i BETA-tilstand, og API-et kan endres i fremtiden.Vennligst bruk produksjonsmiljøet med forsiktighet

25、Modify Response Body GatewayFilter Factory

Filterfabrikken kan også brukes til å endre innholdet i den opprinnelige svarkroppen, og filterfabrikken kan kun konfigureres via kode, ikke i konfigurasjonsfilen. Kodeeksempel:


Tips: Denne filterfabrikken er i BETA-tilstand, API-et kan endres i fremtiden, vennligst bruk den med forsiktighet i produksjonsmiljøet

26、Default Filters

Standardfiltre brukes til å legge til en filterfabrikk på alle ruter, det vil si for å passereFilteret fabrikkkonfigurert av Standardfilteret vil gjelder for alle ruter。 Konfigurasjonseksempel:


(Slutt)




Foregående:Docker-logger fyller opp disker og datamigrering
Neste:Java dynamisk sammenkoblede SQL-setninger forhindrer databaseinjeksjon
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com