Vgrajena tovarna filtrov
Tukaj je preprosta tabela vseh tovarn filtrov, vgrajenih v Spring Cloud Gateway, ki ni zelo podrobna, a lahko služi kot hiter pregled. Kot sledi:
Tovarna filtrov | funkcija | parameter | AddRequestHeader | Dodajte glavo izvirni zahtevi | Ime in vrednost glave | AddRequestParameter | Dodajte parametre zahteve k izvirni zahtevi | Ime in vrednost parametra | AddResponseHeader | Dodajte glavo izvirnemu odgovoru | Ime in vrednost glave | DedupeResponseHeader | Zavrne podvojene vrednosti v glavi odgovora | Ime glave in strategija deduplikacije, ki ju je treba deduplikirati | Hystrix | Uvedba Hystrixove zaščite pred odklopniki za pot | Ime HystrixCommand | FallbackHeaders | Dodajte specifične informacije o izjemah v glavo zahteve fallbackUri-ja | Ime glave | PredponaPot | Dodajte predpono na prvotno pot zahteve | Pot predpone | PreserveHostHeader | Dodajte lastnost preserveHostHeader=true v zahtevo, ki jo usmerjevalni filter preveri, da se odloči, ali želite poslati izvirni Host | ne | RequestRateLimiter | Algoritem za omejevanje zahtevkov je algoritem za omejevanje žetonov | keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus | RedirectTo | Preusmeri prvotno zahtevo na določen URL | HTTP statusna koda in URL za preusmeritev | OdstraniteHopZHopHeadersFilter | Odstranite serijo glav, ki jih je predpisala organizacija IETF za prvotno zahtevo | To je privzeto omogočeno, in lahko določite, katere glave bodo izbrisane samo preko konfiguracije | RemoveRequestHeader | Izbriši glavo za izvirno zahtevo | Ime glave | RemoveResponseHeader | Odstranite glavo za izvirni odgovor | Ime glave | RewritePath | Prepiši prvotno pot zahteve | Izvirni regex poti in regex prepisane poti | RewriteResponseHeader | Prepiši glavo v izvirnem odgovoru | Ime glave, regularni izraz vrednosti, prepisana vrednost | SaveSession | Pred posredovanjem zahteve uveljavi operacijo WebSession::save | ne | secureHeaders | Dodajte serijo glav odzivov, ki delujejo kot varnost, k izvirnemu odzivu | Nobenih, vrednosti teh glav varnostnega odziva lahko spremenite | SetPath | Spremenite prvotno pot zahteve | Spremenjena pot | SetResponseHeader | Spremenite vrednost glave v izvirnem odzivu | Ime glave, spremenjena vrednost | StatusSetStatus | Spremenite statusno kodo izvirnega odgovora | HTTP statusne kode, ki so lahko številke ali nizi | Predpona Strip | Uporabljeno za skrajšanje poti izvirne zahteve | Uporabite številke za označevanje števila poti, ki jih je treba odrezati | Ponoviti | Poskusi znova za različne odgovore | retries、statuses、methods、series | RequestSize | Nastavite velikost največjega števila zahtevanih paketov, ki jih je dovoljeno prejeti. Če velikost paketa zahtevkov preseže nastavljeno vrednost, se vrne 413 Payload Too Large | Velikost paketa zahtevkov je v bajtih, privzeta vrednost pa je 5M | ModifyRequestBody | Pred posredovanjem zahteve spremenite vsebino izvirnega telesa zahteve | Spremenjena vsebina telesa zahtev | ModifyResponseBody | Spremenite vsebino izvirnega telesa odziva | Vsebina spremenjenega odzivnega telesa | Privzeto | Dodajte filtre za vse poti | Ime in vrednost tovarne filtrov |
Nasveti: Vsaka tovarna filtrov ustreza razredu implementacije, in tiIme razreda se mora končati z GatewayFilterFactoryTo je konvencija Spring Cloud Gateway, na primer, implementacijski razred, ki ustreza AddRequestHeader, je AddRequestHeaderGatewayFilterFactory. Prijatelji, ki jih zanima izvorna koda, lahko po tem pravilu povežejo določena imena razredov, da najdejo implementacijsko kodo teh vgrajenih tovarn filtrov.
1、AddRequestHeader GatewayFilter Factory
Dodajte glavo izvirni zahtevi, primer konfiguracije:
Dodajte glavo zahteve z imenom X-Request-Foo z vrednostjo Bar k izvirni zahtevi
2、AddRequestParameter GatewayFilter Factory
Dodajte parametre in vrednosti zahteve k izvirni zahtevi, primer konfiguracije:
Dodajte parameter z imenom foo z vrednostjo črte v prvotno zahtevo, tj.: foo=bar
3、AddResponseHeader GatewayFilter Factory
Dodajte glavo izvirnemu odgovoru, primer konfiguracije:
Dodajte glavo odgovora z imenom X-Request-Foo z vrednostjo Bar k izvirnemu odgovoru
4、DedupeResponseHeader GatewayFilter Factory
DedupeResponseHeader lahko odstrani podvojene vrednosti v odgovornih glavah na podlagi konfiguriranega imena glave in politike deduplikacije, kar je nova funkcija, ki jo zagotavlja Spring Cloud Greenwich SR2 in je v tej različici ni mogoče uporabiti.
MiČe je glava CORS (Solving Cross-Domain) nastavljena tako na prehodu kot na mikroservisu, če konfiguracija ni narejena, potem vrednost CORS glave, pridobljena z zahtevo po -> prehodu -> mikroservisu, bo takole:
Vidite lahko, da so vrednosti teh dveh glav podvojene; če želite deduplikirati vrednosti teh dveh glav, morate uporabiti DedupeResponseHeader, primer konfiguracije:
Strategija deduplikacije:
- RETAIN_FIRST: Privzeto, ohranite prvo vrednost
- RETAIN_LAST: Obdržite zadnjo vrednost
- RETAIN_UNIQUE: Ohranite vse edinstvene vrednosti v vrstnem redu, v katerem so se prvič pojavile
Če želite imeti bolj celovito razumevanje tovarne filtrov, je priporočljivo prebrati izvorno kodo tovarne filtrov, saj izvorna koda vsebuje podrobne opombe in primere, kar je bolje kot uradna dokumentacija: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory
5、Hystrix GatewayFilter Factory
Predstavljamo Hystrixovo zaščito pred odklopniki za poti, primer konfiguracije:
Hystrix je prva generacija komponent Spring Cloud, odpornih na napake, vendar je vstopil v vzdrževalni način, Hystrix pa bo v prihodnosti odstranjen s strani Spring Cloud, nadomeščen z Alibaba Sentinel/Resilience4J. Zato ta članek ne bo šel v podrobnosti, če vas zanima, lahko pogledate uradno dokumentacijo: Hystrix GatewayFilter Factory
6、Tovarna GatewayFilter za FallbackHeaders
Prav tako podpira Hystrix, tovarna filtrov, opisana v prejšnjem razdelku, podpira konfiguracijski parameter: fallbackUri, ki se uporablja za posredovanje zahtevkov na določen URI, kadar pride do izjeme. Tovarna filtrov FallbackHeaders lahko doda glavo ob posredovanju zahteve na URI, vrednost te glave pa je specifična informacija o izjemi. Primer konfiguracije:
Tukaj ne bom šel v podrobnosti, če vas zanima, lahko pogledate uradno dokumentacijo: FallbackHeaders GatewayFilter Factory
7、PrefixPath GatewayFilter Factory
Dodajte pot predpone na izvirno pot zahteve, primer konfiguracije:
Ta konfiguracija omogoča posredovanje obiska ${GATEWAY_URL}/hello nahttps://example.org/mypath/hello
8、PreserveHostHeader GatewayFilter Factory
Dodajte lastnost preserveHostHeader=true v zahtevo, ki jo usmerjevalni filter preveri, da se odloči, ali poslati izvirno glavo gostitelja. Primer konfiguracije:
Če ni nastavljeno, bo glavo z imenom Host nadzoroval Http odjemalec
9、RequestRateLimiter GatewayFilter Factory
Uporablja se za omejevanje zahtev, algoritem pa je vedro za žetone. Primer konfiguracije:
10、RedirectTo GatewayFilter Factory
Preusmeri prvotno zahtevo na določen URL, primer konfiguracije:
Ta konfiguracija omogoča preusmeritev dostopa do ${GATEWAY_URL}/hello na https://acme.org/hello , in nosi enoLocation:http://acme.orgGlava, medtem ko je HTTP statusna koda, ki vrača odjemalca, 302
Opombe:
HTTP statusna koda naj bo 3xx, npr. 301
URL mora biti legitimen URL, ki služi kot vrednost glave lokacije
11、RemoveHopByHopHeadersFilter GatewayFilter Factory
Za prvotno zahtevo za odstranitev serije glav, ki jih določi organizacija IETF, so privzete izbrisane glave naslednje:
- Povezava
- Keep-Alive
- Proxy-avtentikacija
- Pooblastilo za pooblastilo
- TE
- Prikolica
- Prenosno-kodiranje
- Nadgradnja
Lahko določite, katere glave se izbrišejo samo skozi konfiguracijo, primer konfiguracije:
12、RemoveRequestHeader GatewayFilter Factory
Za odstranitev glave za izvirno zahtevo nastavite primer:
Odstranite glavo zahteve z imenom X-Request-Foo iz izvirne zahteve
13、RemoveResponseHeader GatewayFilter Factory
Za odstranitev glave izvirnega odgovora nastavite primer:
Odstranite glavo odgovora z imenom X-Request-Foo iz izvirnega odgovora
14、RewritePath GatewayFilter Factory
Preglasitev izvirne poti zahteve z regularnim izrazom, primer konfiguracije:
Ta konfiguracija omogoča dostop do /foo/bar, da prepiše pot do /bar in jo posreduje, torej posreduje na https://example.org/bar。 Upoštevajte, da je zaradi YAML sintakse treba namesto $ uporabiti $\
15、RewriteResponseHeader GatewayFilter Factory
Prepišite glavo v izvirnem odgovoru, primer konfiguracije:
Pomen te konfiguracije je, da če je vrednost X-Response-Foo v glavi odziva /42?user=ford&password=omg!what&flag=true, bo prepisana v /42?user=ford&password=***&flag=true glede na nastavljeno vrednost, torej password=omg!kar bo prepisano v password=***
16、SaveSession GatewayFilter Factory
Pred posredovanjem zahteve uveljavite operacijo WebSession::save, primer konfiguracije:
Uporablja se predvsem za odloženo shranjevanje podatkov (podatki se ne hranijo takoj), podobno kot Spring Session, in želi zagotoviti, da se stanje seje shrani, preden se zahteva posreduje. Če integrirate Spring Secutiry v Spring Session in želite zagotoviti, da se vse varnostne informacije prenesejo na nadaljnje računalnike, morate ta filter konfigurirati.
17、secureHeaders GatewayFilter Factory
Tovarna filtrov secureHeaders temelji predvsem na priporočilih v tem blogu in dodaja vrsto glav odgovorov, ki igrajo varnostno vlogo v izvirnem odgovoru. Privzeto se dodajo naslednji Headerji (vključno z vrednostmi):
- 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
Če želite spremeniti vrednosti teh glav, morate uporabiti ustrezne pripone teh glav, kot sledi:
- XSS-protection-header
- stroga varnost transporta
- Možnosti okvirjev
- tip-vsebine-možnosti
- Referrer-policy
- Vsebina-Varnost-Politika
- možnosti prenosa
- dovoljene politike čez domene
Primer konfiguracije:
Če želite onemogočiti določene glave, lahko uporabite naslednjo konfiguracijo:
18、SetPath GatewayFilter Factory
Spremenite prvotno pot zahteve in konfigurirajte primer:
Ta konfiguracija omogoča posredovanje na ${GATEWAY_URL}/foo/bar ob dostopuhttps://example.org/bar , torej je bil izvirni /foo/bar spremenjen v /bar
19、SetResponseHeader GatewayFilter Factory
Spremenite vrednost glave v izvirnem odgovoru, konfigurirajte primer:
Spremenite vrednost X-Response-Foo v izvirnem odzivu na Bar
20、SetStatus GatewayFilter Factory
Spremenite statusno kodo izvirnega odgovora, primer konfiguracije:
Vrednost SetStatusd je lahko številka ali niz. Vendar mora biti vrednost v razredu Spring HttpStatus. Obe zgornji konfiguraciji lahko vrneta HTTP statusno kodo 401.
21、StripPrefix GatewayFilter Factory
Za krajšanje poti izvirne zahteve, primer konfiguracije:
Kot je prikazano v zgornji konfiguraciji, če je zahtevana pot /name/bar/foo, se bo skrajšala na /foo in posredovana, torej bosta odrezani dve poti.
22、Ponovno poskusi GatewayFilter Factory
Poskusite znova za različne odgovore, npr. za HTTP statusne kode, primer konfiguracije:
Naslednje parametre je mogoče konfigurirati:
- ponovitve: Število ponovnih poskusov
- statusi: Statusna koda, ki jo je treba ponovno preizkusiti, nastavljena v org.springframework.http.HttpHttpStatus
- methods: Metoda zahtev, ki jo je treba ponovno preizkusiti, z vrednostjo org.springframework.http.HttpHttpMethod
- series:HTTP statusna koda, z vrednostjo v org.springframework.http.HttpHttpStatus.Series
23、RequestSize GatewayFilter Factory
Nastavite velikost največjega števila dovoljenih paketov zahtev, primer konfiguracije:
Če velikost paketa zahtevka preseže nastavljeno vrednost, se vrne 413 Payload Too Large skupaj z errorMessage
24、Tovarna za spreminjanje telesa zahtevkov GatewayFilter
Pred posredovanjem zahteve spremenite vsebino prvotnega telesa zahteve, tovarna filtrov se lahko konfigurira le s kodo, ne pa v konfiguracijski datoteki. Primer kode:
Nasveti: Ta tovarna filtrov je v BETA stanju, API pa se lahko v prihodnosti spremeni.Prosimo, da produkcijsko okolje uporabljate previdno
25、Tovarna GatewayFilter za prilagoditev odzivnega telesa
Tovarna filtrov se lahko uporabi tudi za spreminjanje vsebine izvirnega odzivnega telesa, tovarna filtrov pa je lahko konfigurirana le s kodo, ne pa v konfiguracijski datoteki. Primer kode:
Nasveti: Ta tovarna filtrov je v BETA stanju, API se lahko v prihodnosti spremeni, prosimo, uporabljajte ga previdno v proizvodnem okolju
26、Privzeti filtri
Privzeti filtri se uporabljajo za dodajanje tovarne filtrov na vse poti, torej za prehodTovarna filtrov, konfigurirana z privzetim filtrom, bo veljala za vse poti。 Primer konfiguracije:
(Konec)
|