Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 9128|Odgovoriti: 0

[Vir] Tovarne filtrov, vgrajene v Spring Cloud Gateway

[Kopiraj povezavo]
Objavljeno na 7. 02. 2022 13:36:49 | | |
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:


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




Prejšnji:Dockerjevi dnevniki polnijo diske in migracijo podatkov
Naslednji:Java dinamično povezani SQL stavki preprečujejo vbrizgavanje podatkovne baze
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com