Į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:
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)
|