Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 9128|Atsakyti: 0

[Šaltinis] Filtrų gamyklos, integruotos į "Spring Cloud Gateway"

[Kopijuoti nuorodą]
Paskelbta 2022-02-07 13:36:49 | | |
Įmontuota filtrų gamykla

Čia yra paprasta visų "Spring Cloud Gateway" įmontuotų filtrų gamyklų lentelė, kuri nėra labai išsami, tačiau gali būti naudojama kaip greita apžvalga. Taip:

Filtrų gamykla
funkcija
Parametras
AddRequestHeader
Antraštės įtraukimas į pradinę užklausą
Antraštės pavadinimas ir reikšmė
AddRequestParameter
Užklausos parametrų įtraukimas į pradinę užklausą
Parametro pavadinimas ir vertė
Pridėti atsakymo antraštę
Antraštės įtraukimas į pradinį atsakymą
Antraštės pavadinimas ir reikšmė
DedupeResponseHeader
Atmeta pasikartojančias reikšmes atsakymo antraštėje
Antraštės pavadinimas ir dublikatų šalinimo strategija, kurią reikia pašalinti
Hystrix
Pristatykite "Hystrix" grandinės pertraukiklio apsaugą maršrutui
HystrixCommand pavadinimas
Atsarginės antraštės
Konkrečios išimties informacijos įtraukimas į atsarginio URI užklausos antraštę
Antraštės pavadinimas
PrefixPath
Pridėkite priešdėlį prie pradinio užklausos kelio
Priešdėlio kelias
PreserveHostHeader
Į užklausą įtraukite ypatybę preserveHostHeader=true, kurią maršruto parinkimo filtras patikrina, kad nuspręstų, ar norite siųsti pradinį pagrindinį kompiuterį
ne
RequestRateLimiter
Droselio algoritmas, naudojamas užklausoms slopinti, yra žetonų kibiras
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
Nukreipti į
Peradresuokite pradinę užklausą į nurodytą URL
HTTP būsenos kodas ir peradresavimo URL
RemoveHopByHopHeadersFilter
Pašalinkite IETF organizacijos pradinei užklausai nurodytų antraščių seriją
Tai įjungta pagal numatytuosius nustatymus ir galite nurodyti, kurias antraštes naikinti tik per konfigūraciją
RemoveRequestHeader
Naikinti pradinės užklausos antraštę
Antraštės pavadinimas
RemoveResponseHeader
Pradinio atsakymo antraštės šalinimas
Antraštės pavadinimas
Perrašyti kelią
Perrašykite pradinį užklausos kelią
Pradinė kelio reguliarioji išraiška ir perrašyto kelio reguliarioji išraiška
PerrašytiAtsakymo antraštė
Perrašyti pradinio atsakymo antraštę
Antraštės pavadinimas, reguliarioji reikšmės išraiška, perrašyta reikšmė
Išsaugoti sesiją
Prieš persiųsdami užklausą įgalinkite WebSession::save operaciją
ne
secureHeaders
Atsakymo antraščių, kurios veikia kaip pradinio atsakymo sauga, serijos įtraukimas
Nėra, galite modifikuoti šių saugos atsakymų antraščių reikšmes
SetPath
Modifikuoti pradinį užklausos kelią
Modifikuotas kelias
SetResponseHeader
Modifikuoti pradinio atsakymo antraštės reikšmę
Antraštės pavadinimas, modifikuota reikšmė
NustatytiBūsena
Modifikuoti pradinio atsakymo būsenos kodą
HTTP būsenos kodai, kurie gali būti skaičiai arba eilutės
Juostelės priešdėlis
Naudojamas pradinės užklausos keliui sutrumpinti
Naudokite skaičius, kad nurodytumėte, kiek maršrutų reikia sutrumpinti
Kartoti
Kartoti skirtingus atsakymus
Kartojimai、Būsenos、Metodai、Serija
Užklausos dydis
Nustatykite maksimalų prašomų paketų, kuriuos leidžiama gauti, dydį. Jei užklausos paketo dydis viršija nustatytą vertę, grąžinama 413 Naudingoji apkrova per didelė
Užklausos paketo dydis yra baitais, o numatytoji reikšmė yra 5M
ModifikuotiUžklausos turinį
Prieš persiųsdami užklausą modifikuokite pradinį užklausos turinį
Modifikuoto užklausos turinio turinys
ModifyResponseBody
Modifikuoti pradinio atsakymo turinį
Modifikuoto atsakymo turinio turinys
Numatytasis
Visų maršrutų filtrų pridėjimas
Filtro gamyklos pavadinimas ir vertė

Patarimai: Kiekviena filtrų gamykla atitinka diegimo klasę, ir šieKlasės pavadinimas turi baigtis GatewayFilterFactoryTai yra "Spring Cloud Gateway" konvencija, pavyzdžiui, įgyvendinimo klasė, atitinkanti "AddRequestHeader", yra "AddRequestHeaderGatewayFilterFactory". Draugai, kurie domisi šaltinio kodu, gali sujungti konkrečius klasių pavadinimus pagal šią taisyklę, kad rastų šių integruotų filtrų gamyklų diegimo kodą.

1 、 AddRequestHeader GatewayFilter gamykla

Pridėkite antraštę prie pradinės užklausos, konfigūracijos pavyzdys:


Pridėkite užklausos antraštę pavadinimu X-Request-Foo su Bar reikšme prie pradinės užklausos

2 、 "AddRequestParameter GatewayFilter" gamykla

Pridėkite užklausos parametrus ir reikšmes prie pradinės užklausos, konfigūracijos pavyzdys:


Prie pradinės užklausos pridėkite parametrą, pavadintą foo su baro reikšme, pvz.: foo=bar

3 、 AddResponseHeader GatewayFilter gamykla

Antraštės įtraukimas į pradinį atsakymą, konfigūracijos pavyzdys:


Į pradinį atsakymą įtraukite atsakymo antraštę pavadinimu X-Request-Foo su Bar reikšme

4 、 DedupeResponseHeader GatewayFilter gamykla

DedupeResponseHeader gali pašalinti pasikartojančias reikšmes atsakymų antraštėse pagal sukonfigūruotą antraštės pavadinimą ir dublikatų šalinimo strategiją, kuri yra nauja funkcija, kurią teikia Spring Cloud Greenwich SR2 ir kurios negalima naudoti šioje versijoje.

MesJei CORS (kryžminio domeno sprendimas) antraštė nustatyta ir šliuze, ir mikropaslaugoje, jei konfigūracija neatliekama, tada CORS antraštės vertė, gauta paprašius -> šliuzo -> mikropaslaugos, jis bus toks:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Galite pamatyti, kad šių dviejų antraščių reikšmės yra dubliuojamos, jei norite pašalinti šių dviejų antraščių reikšmes, turite naudoti DedupeResponseHeader, konfigūracijos pavyzdys:

Dublikatų šalinimo strategija:

  • RETAIN_FIRST: Numatytasis, palikti pirmąją reikšmę
  • RETAIN_LAST: Išsaugokite paskutinę reikšmę
  • RETAIN_UNIQUE: palikti visas unikalias reikšmes tokia tvarka, kokia jos pasirodė pirmą kartą


Jei norite išsamiau suprasti filtrų gamyklą, rekomenduojama perskaityti filtrų gamyklos šaltinio kodą, nes šaltinio kode yra išsamių pastabų ir pavyzdžių, kurie yra geresni nei oficiali dokumentacija: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5 、 "Hystrix Gateway" filtrų gamykla

Pristatome "Hystrix" grandinės pertraukiklio apsaugą maršrutams, konfigūracijos pavyzdys:


"Hystrix" yra pirmosios kartos gedimams atsparūs "Spring Cloud" komponentai, tačiau jis perėjo į priežiūros režimą, o ateityje "Hystrix" pašalins "Spring Cloud", kurį pakeis "Alibaba Sentinel" / "Resilience4J". Taigi šiame straipsnyje nebus išsamiai aprašyta, jei jus domina, galite kreiptis į oficialią dokumentaciją: "Hystrix GatewayFilter" gamykla

6 、 FallbackHeaders GatewayFilter gamykla

Taip pat palaikanti "Hystrix", ankstesniame skyriuje aprašyta filtrų gamykla palaiko konfigūracijos parametrą: fallbackUri, kuris naudojamas užklausoms persiųsti į konkretų URI, kai įvyksta išimtis. FallbackHeaders filtrų gamykla gali pridėti antraštę, kai persiunčia užklausą į URI, o šios antraštės reikšmė yra konkreti išimties informacija. Konfigūracijos pavyzdys:


Čia nesigilinsiu, jei jus domina, galite peržiūrėti oficialią dokumentaciją: "FallbackHeaders GatewayFilter" gamykla

7 、 PrefixPath GatewayFilter gamykla

Pridėkite priešdėlio kelią prie pradinio užklausos kelio, konfigūracijos pavyzdys:


Dėl šios konfigūracijos apsilankymas ${GATEWAY_URL}/hello peradresuojamas įhttps://example.org/mypath/hello

8 、 PreserveHostHeader GatewayFilter gamykla

Į užklausą įtraukite ypatybę preserveHostHeader=true, kurią maršruto parinkimo filtras patikrina, kad nuspręstų, ar siųsti pradinę pagrindinio kompiuterio antraštę. Konfigūracijos pavyzdys:


Jei nenustatyta, antraštę pavadinimu Pagrindinis kompiuteris valdys Http klientas

9 、 RequestRateLimiter GatewayFilter gamykla

Jis naudojamas užklausoms slopinti, o droselio algoritmas yra žetonų kibiras. Konfigūracijos pavyzdys:


10 、 RedirectTo GatewayFilter gamykla

Peradresuokite pradinę užklausą į nurodytą URL, konfigūracijos pavyzdys:


Dėl šios konfigūracijos prieiga prie ${GATEWAY_URL}/hello nukreipiama į https://acme.org/hello ir nešioti vienąLocation:http://acme.orgAntraštė, o HTTP būsenos kodas, grąžinantis klientą, yra 302

Pastabos:

HTTP būsenos kodas turi būti 3xx, pvz., 301

URL turi būti teisėtas URL, kuris naudojamas kaip vietovės antraštės reikšmė

11 、 RemoveHopByHopHeadersFilter Gateway Filter Factory

Pradinėje užklausoje pašalinti IETF organizacijos nurodytas antraštes numatytosios panaikintos antraštės yra šios:


  • Ryšys
  • Išlaikykite gyvą
  • Tarpinis autentifikavimas
  • Įgaliotinis
  • TE
  • Priekaba
  • Perdavimo kodavimas
  • Atnaujinti


Galite nurodyti, kurios antraštės panaikinamos tik per konfigūraciją, konfigūracijos pavyzdį:


12 、 RemoveRequestHeader GatewayFilter gamykla

Norėdami pašalinti pradinės užklausos antraštę, sukonfigūruokite pavyzdį:


Pašalinkite užklausos antraštę pavadinimu X-Request-Foo iš pradinės užklausos

13 、 RemoveResponseHeader GatewayFilter gamykla

Norėdami pašalinti pradinio atsakymo antraštę, sukonfigūruokite pavyzdį:


Pašalinkite atsakymo antraštę pavadinimu X-Request-Foo iš pradinio atsakymo

14 、 "RewritePath GatewayFilter" gamykla

Pradinio užklausos kelio nepaisymas naudojant reguliariąją išraišką, konfigūracijos pavyzdys:


Ši konfigūracija suteikia prieigą prie /foo/bar perrašyti kelią į /bar ir persiųsti jį, t.y. persiųsti į https://example.org/bar。 Atminkite, kad dėl YAML sintaksės vietoj $ reikia naudoti $\

15 、 RewriteResponseHeader GatewayFilter gamykla

Perrašykite antraštę pradiniame atsakyme, konfigūracijos pavyzdyje:


Šios konfigūracijos reikšmė yra ta, kad jei X-Response-Foo reikšmė atsakymo antraštėje yra /42?user=ford&password=omg!what&flag=true, tada ji bus perrašyta į /42?user=ford&password=***&flag=true pagal sukonfigūruotą reikšmę, tai yra, password=omg!what bus perrašyta į slaptažodį=***

16 、 "SaveSession GatewayFilter" gamykla

Prieš persiųsdami užklausą, įgalinkite WebSession::save operaciją, konfigūracijos pavyzdį:


Jis daugiausia naudojamas atidėtam duomenų saugojimui (duomenys neišlieka iš karto), pvz., pavasario sesijai, ir nori užtikrinti, kad sesijos būsena būtų išsaugota prieš perduodant užklausą. Jei integruojate "Spring Secutiry" į "Spring Session" ir norite užtikrinti, kad visa saugos informacija būtų perduodama tolesniems įrenginiams, turite sukonfigūruoti šį filtrą.

17 、 SecureHeaders GatewayFilter gamykla

"secureHeaders" filtrų gamykla daugiausia remiasi šiame tinklaraštyje pateiktomis rekomendacijomis, pridedant daugybę atsakymų antraščių, kurios atlieka saugos vaidmenį pradiniame atsakyme. Pagal numatytuosius nustatymus pridedamos šios antraštės (įskaitant reikšmes):


  • 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


Jei norite modifikuoti šių antraščių reikšmes, turite naudoti atitinkamas šių antraščių priesagas, kaip nurodyta toliau:

  • xss-apsaugos-antraštė
  • griežtas transportas-saugumas
  • rėmo parinktys
  • turinio tipo parinktys
  • Rekomendacijų politika
  • turinio saugos politika
  • atsisiuntimo parinktys
  • leidžiamos kelių domenų strategijos


Konfigūracijos pavyzdys:


Jei norite išjungti tam tikras antraštes, galite naudoti šią konfigūraciją:

18 、 "SetPath GatewayFilter" gamykla

Modifikuokite pradinį užklausos kelią ir sukonfigūruokite pavyzdį:


Ši konfigūracija persiunčia jį į ${GATEWAY_URL}/foo/bar, kai pasiekiamashttps://example.org/bar , tai yra, originalus /foo/bar buvo pakeistas į /bar

19 、 SetResponseHeader GatewayFilter gamykla

Modifikuokite pradinio atsakymo antraštės reikšmę, sukonfigūruokite pavyzdį:


Pakeiskite X-Response-Foo reikšmę pradiniame atsakyme į Bar

20 、 "SetStatus GatewayFilter" gamykla

Modifikuoti pradinio atsakymo būsenos kodą, konfigūracijos pavyzdys:


SetStatusd reikšmė gali būti skaičius arba eilutė. Bet tai turi būti pavasario HttpStatus išvardijimo klasės reikšmė. Abi aukščiau pateiktos konfigūracijos gali grąžinti HTTP būsenos kodą 401.

21 、 StripPrefix GatewayFilter gamykla

Norėdami sutrumpinti pradinės užklausos kelią, konfigūracijos pavyzdys:


Kaip parodyta aukščiau pateiktoje konfigūracijoje, jei prašomas kelias yra /name/bar/foo, tada jis bus sutrumpintas į /foo ir persiųstas, tai yra, 2 keliai bus sutrumpinti.

22 、 Pakartokite "GatewayFilter" gamyklą

Pakartokite skirtingus atsakymus, pvz., HTTP būsenos kodus, konfigūracijos pavyzdys:


Galima sukonfigūruoti šiuos parametrus:

  • pakartotiniai bandymai: pakartotinių bandymų skaičius
  • statuses: būsenos kodas, kurį reikia pakartoti, nustatytas org.springframework.http.HttpStatus
  • metodai: užklausos metodas, kurį reikia pakartoti, kurio reikšmė yra org.springframework.http.HttpMethod
  • serija:HTTP būsenos kodo seka, kurios reikšmė yra org.springframework.http.HttpStatus.Series


23 、 RequestSize GatewayFilter gamykla

Nustatykite maksimalų leidžiamų gauti užklausų paketų dydį, konfigūracijos pavyzdys:


Jei užklausos paketo dydis viršija nustatytą reikšmę, kartu su errorMessage grąžinamas 413 Payload Too Large

24 、 Pakeiskite užklausos kūno šliuzo filtro gamyklą

Prieš persiųsdami užklausą, pakeiskite pradinį užklausos turinį, filtrų gamyklą galima sukonfigūruoti tik pagal kodą, o ne konfigūracijos faile. Kodo pavyzdys:


Patarimai: Ši filtrų gamykla yra BETA būsenos, o API ateityje gali pasikeisti.Atsargiai naudokite gamybos aplinką

25 、 Pakeiskite atsakymo korpuso šliuzo filtro gamyklą

Filtrų gamykla taip pat gali būti naudojama originalaus atsakymo turinio turiniui modifikuoti, o filtro gamyklą galima sukonfigūruoti tik pagal kodą, o ne konfigūracijos faile. Kodo pavyzdys:


Patarimai: Ši filtrų gamykla yra BETA būsenos, API ateityje gali pasikeisti, naudokite ją atsargiai gamybos aplinkoje

26 、 Numatytieji filtrai

Numatytieji filtrai naudojami norint pridėti filtrų gamyklą prie visų maršrutų, tai yra, praeitiNumatytojo filtro gamykloje sukonfigūruotas filtras bus taikomas visiems maršrutams。 Konfigūracijos pavyzdys:


(Pabaiga)




Ankstesnis:"Docker" žurnalai užpildo diskus ir duomenų perkėlimą
Kitą:Java dinamiškai sujungti SQL sakiniai neleidžia įterpti duomenų bazės
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com