Sisäänrakennettu suodatintehdas
Tässä on yksinkertainen taulukko kaikista Spring Cloud Gatewayn suodatintehtaista, joka ei ole kovin yksityiskohtainen, mutta voidaan käyttää nopeana yleiskatsauksena. Seuraavasti:
Suodatintehdas | funktio | parametri | AddRequestHeader | Lisää otsikko alkuperäiseen pyyntöön | Otsikon nimi ja arvo | AddRequestParameter | Lisää pyyntöparametrit alkuperäiseen pyyntöön | Parametrin nimi ja arvo | AddResponseHeader | Lisää otsikko alkuperäiseen vastaukseen | Otsikon nimi ja arvo | DedupeResponseHeader | Hylkää päällekkäiset arvot vastauksen otsikossa | Otsikon nimi ja deduplikointistrategia, jotka täytyy deduplicatoida | Hystrix | Otetaan käyttöön Hystrixin katkaisijasuoja reitille | HystrixCommandin nimi | Varaotsikot | Lisää tarkat poikkeustiedot fallbackUri:n pyyntöotsikoon | Otsikon nimi | PrefixPath | Lisää etuliite alkuperäiseen pyyntöpolkuun | Etuliitepolku | PreserveHostHeader | Lisää pyyntöön preserveHostHeader=true -ominaisuus, jonka reitityssuodatin tarkistaa päättääkseen, haluatko lähettää alkuperäisen isännän | ei | RequestRateLimiter | Rajoitusalgoritmia käytetään pyyntöjen rajoittamiseen, ja se on token-ämpäri | keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus | Uudelleenohjaus osoitteeseen | Ohjaa alkuperäinen pyyntö määritettyyn URL-osoitteeseen | HTTP-tilakoodi ja uudelleenohjaus-URL | PoistaHopByHopHeadersSuodatin | Poista IETF-organisaation alkuperäiselle pyynnölle määräämät otsikot | Tämä on oletuksena käytössä, ja voit määrittää, mitkä otsikot poistetaan vain konfiguroinnin kautta | RemoveRequestHeader | Poista alkuperäisen pyynnön otsikko | Otsikon nimi | RemoveResponseHeader | Poista otsikko alkuperäisestä vastauksesta | Otsikon nimi | RewritePath | Kirjoita alkuperäinen pyyntöpolku uudelleen | Alkuperäinen polkuregex ja uudelleenkirjoitetun polun regex | RewriteResponseHeader | Kirjoita otsikko uudelleen alkuperäiseen vastaukseen | Otsikon nimi, arvon säännöllinen lauseke, uudelleenkirjoitettu arvo | SaveSession | Pakota WebSession::save -toiminto ennen pyynnön välittämistä | ei | secureHeaders | Lisää sarja vastausotsikoita, jotka toimivat alkuperäisen vastauksen turvana | Ei mitään, voit muokata näiden tietoturvavasteotsikoiden arvoja | SetPath | Muokkaa alkuperäistä pyyntöpolkua | Muokattu reitti | SetResponseHeader | Muokkaa otsikon arvoa alkuperäisessä vastauksessa | Otsikon nimi, muokattu arvo | SetStatus | Muokkaa alkuperäisen vastauksen tilakoodia | HTTP-tilakoodit, jotka voivat olla numeroita tai merkkijonoja | StripPrefix | Käytetään alkuperäisen pyynnön polun lyhentämiseen | Käytä numeroita osoittamaan, kuinka monta reittiä katkaistaisiin | Yritä | Kokeile uudelleen eri vastauksia varten | retries、statuses、methods、series | RequestSize | Aseta vastaanotettavien pakettien enimmäismäärä. Jos pyyntöpaketin koko ylittää asetetun arvon, palautetaan 413 Payload Too Large | Pyyntöpaketin koko on tavuina ja oletusarvo on 5M | ModifyRequestBody | Muokkaa alkuperäistä pyyntörungon sisältöä ennen pyynnön välittämistä | Muokattu pyyntörungon sisältö | ModifyResponseBody | Muokkaa alkuperäisen vastekehon sisältöä | Muokattu vastekehon sisältö | Laiminlyönti | Lisää suodattimia kaikille reiteille | Suodattimen tehtaan nimi ja arvo |
Vinkkejä: Jokainen suodatintehdas vastaa toteutusluokkaa, ja nämäLuokan nimen tulee päättyä GatewayFilterFactoryynTämä on Spring Cloud Gatewayn käytäntö, esimerkiksi AddRequestHeaderin toteutusluokka on AddRequestHeaderGatewayFilterFactory. Lähdekoodista kiinnostuneet ystävät voivat yhdistää tiettyjä luokkanimiä tämän säännön mukaisesti löytääkseen näiden sisäänrakennettujen suodatintehtaiden toteutuskoodin.
1、AddRequestHeader GatewayFilter Factory
Lisää otsikko alkuperäiseen pyyntöön, konfiguraatioesimerkki:
Lisää alkuperäiseen pyyntöön pyyntöotsikko nimeltä X-Request-Foo, jonka arvo on Bar
2、AddRequestParameter GatewayFilter Factory
Lisää pyyntöparametrit ja arvot alkuperäiseen pyyntöön, konfiguraatioesimerkki:
Lisää alkuperäiseen pyyntöön parametri nimeltä foo, jonka arvo on palkki, eli: foo=bar
3、AddResponseHeader GatewayFilter Factory
Lisää otsikko alkuperäiseen vastaukseen, konfiguraatioesimerkki:
Lisää alkuperäiseen vastaukseen vastauksen otsikko nimeltä X-Request-Foo, jonka arvo on Bar
4、DedupeResponseHeader GatewayFilter Factory
DedupeResponseHeader voi poistaa päällekkäiset arvot vastausotsikoista määritettyjen otsikon nimen ja duplikointipolitiikan perusteella, mikä on Spring Cloud Greenwich SR2:n uusi ominaisuus, jota ei voi käyttää tässä versiossa.
MeJos CORS (Solving Cross-Domain) -otsikko on asetettu sekä yhdyskäytävälle että mikropalvelulle, jos konfiguraatiota ei tehdä, niin CORS-otsikon arvo saadaan pyytämällä -> Gateway -> -mikropalvelua, se menee näin:
Näet, että näiden kahden otsikon arvot ovat kaksinkertaisia; jos haluat deduplicatoida näiden kahden otsikon arvot, sinun täytyy käyttää DedupeResponseHeaderia, konfiguraatioesimerkki:
Deduplikaatiostrategia:
- RETAIN_FIRST: Oletus, pidä ensimmäinen arvo
- RETAIN_LAST: Säilytä viimeinen arvo
- RETAIN_UNIQUE: Pidä kaikki ainutlaatuiset arvot alkuperäisessä järjestyksessä
Jos haluat saada kattavamman käsityksen suodatintehtaasta, suositellaan lukemaan suodatintehtaan lähdekoodin, koska lähdekoodissa on yksityiskohtaisia muistiinpanoja ja esimerkkejä, mikä on parempi kuin virallinen dokumentaatio: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory
5、Hystrix GatewayFilter-tehdas
Esittelemme Hystrixin katkaisijasuojan reiteille, konfiguraatioesimerkki:
Hystrix on Spring Cloudin ensimmäisen sukupolven vikasietokykyinen komponentti, mutta se on siirtynyt huoltotilaan, ja Hystrix poistetaan tulevaisuudessa Spring Cloudin toimesta ja korvataan Alibaba Sentinel/Resilience4J:llä. Tämä artikkeli ei mene yksityiskohtiin, jos olet kiinnostunut, voit tutustua viralliseen dokumentaatioon: Hystrix GatewayFilter Factory
6、FallbackHeaders GatewayFilter Factory
Hystrixin tukemana edellisessä osiossa kuvattu suodatintehdas tukee konfiguraatioparametria: fallbackUri, jota käytetään pyyntöjen välittämiseen tiettyyn URI:hen, kun poikkeus ilmenee. FallbackHeaders-suodatintehdas voi lisätä otsikon, kun pyyntö välitetään URI:lle, ja tämän otsikon arvo on erityinen poikkeustieto. Konfiguraatioesimerkki:
En mene yksityiskohtiin tässä, jos olet kiinnostunut, voit katsoa virallista dokumentaatiota: FallbackHeaders GatewayFilter Factory
7、PrefixPath GatewayFilter Factory
Lisää etuliitepolku alkuperäiseen pyyntöpolkuun, konfiguraatioesimerkki:
Tämä konfiguraatio ohjaa käynnin osoitteeseen ${GATEWAY_URL}/hellohttps://example.org/mypath/hello
8、PreserveHostHeader GatewayFilter Factory
Lisää pyyntöön preserveHostHeader=true -ominaisuus, jonka reitityssuodatin tarkistaa päättääkseen, lähetetäänkö alkuperäinen isäntäotsiko. Konfiguraatioesimerkki:
Jos sitä ei ole asetettu, Host-nimistä otsikkoa ohjaa Http-asiakas
9、RequestRateLimiter GatewayFilter Factory
Sitä käytetään pyyntöjen rajoittamiseen, ja rajoitusalgoritmi toimii token-ämpärinä. Konfiguraatioesimerkki:
10、RedirectTo GatewayFilter Factory
Ohjaa alkuperäinen pyyntö määritettyyn URL-osoitteeseen, konfiguraatioesimerkki:
Tämä konfiguraatio ohjaa pääsyn osoitteeseen ${GATEWAY_URL}/hello https://acme.org/hello , ja kantaa yhtäLocation:http://acme.orgOtsikon, kun taas HTTP-tilakoodi, joka palauttaa asiakkaan, on 302
Muistiinpanot:
HTTP-tilakoodin tulisi olla 3xx, esim. 301
URL-osoitteen tulee olla aito URL, joka toimii sijaintiotsikon arvona
11、RemoveHopByHopHeadersFilter GatewayFilter Factory
Alkuperäisessä pyynnössä poistaa IETF-organisaation määrittelemä sarja otsikoita, oletuksena poistetut otsikot ovat seuraavat:
- Yhteys
- Pysy elossa
- Proxy-Authenticate
- Proxy-valtuutus
- TE
- Peräkärry
- Siirtokoodaus
- Päivittää
Voit määrittää, mitkä otsikot poistetaan vain konfiguroinnin kautta, konfiguraatioesimerkki:
12、RemoveRequestHeader GatewayFilter Factory
Poistaaksesi otsikon alkuperäisestä pyynnöstä, määritä esimerkki:
Poista alkuperäisestä pyynnöstä pyyntöotsikko nimeltä X-Request-Foo
13、RemoveResponseHeader GatewayFilter Factory
Poistaaksesi alkuperäisen vastauksen otsikon, määritä esimerkki:
Poista vastauksen otsikko nimeltä X-Request-Foo alkuperäisestä vastauksesta
14、RewritePath GatewayFilter Factory
Alkuperäisen pyyntöpolun ohittaminen säännöllisellä lausekkeella, konfiguraatioesimerkki:
Tämä konfiguraatio mahdollistaa pääsyn /foo/bar-muotoon reitin uudelleenkirjoittamiseen /bar:iin ja sen välittämiseen, eli eteenpäin lähettämiseen https://example.org/bar。 Huomaa, että YAML-syntaksin vuoksi $\ täytyy käyttää $:n sijaan
15、RewriteResponseHeader GatewayFilter Factory
Kirjoita otsikko uudelleen alkuperäiseen vastaukseen, konfiguraatioesimerkki:
Tämän konfiguraation merkitys on siinä, että jos X-Response-Foon arvo vastausotsikossa on /42?user=ford&password=omg!what&flag=true, se kirjoitetaan uudelleen muotoon /42?user=ford&password=***&flag=true konfiguroidun arvon mukaisesti, eli password=omg!what kirjoitetaan uudelleen password=***
16、SaveSession GatewayFilter Factory
Ennen pyynnön välittämistä valvo WebSession::save -toiminto, konfiguraatioesimerkki:
Sitä käytetään pääasiassa lykättyyn datan tallennukseen (dataa ei säilytetä heti), kuten Spring Sessionissa, ja se haluaa varmistaa, että istuntotila tallentuu ennen pyynnön välitystä. Jos integroit Spring Secutiryn Spring Sessioniin ja haluat varmistaa, että kaikki tietoturvatiedot lähetetään alavirran koneille, sinun täytyy konfiguroida tämä suodatin.
17、secureHeaders GatewayFilter-tehdas
SecureHeaders-suodatintehdas perustuu pääasiassa tämän blogin suosituksiin, lisäten sarjan vastausotsikoita, joilla on turvallisuusrooli alkuperäisessä vastauksessa. Oletuksena seuraavat otsikot (mukaan lukien arvot) lisätään:
- 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
Jos haluat muuttaa näiden otsikoiden arvoja, sinun tulee käyttää näiden otsikoiden vastaavia päätteitä seuraavasti:
- xss-suojaus-otsikko
- tiukka kuljetusturvallisuus
- Kehysvaihtoehdot
- sisältötyyppi-vaihtoehdot
- Referrer-politiikka
- Sisältöturvallisuus-politiikka
- Latausvaihtoehdot
- Sallittua-verkkotunnusten väliset politiikat
Konfiguraatioesimerkki:
Jos haluat poistaa tietyt otsikot käytöstä, voit käyttää seuraavaa asetusta:
18、SetPath GatewayFilter Factory
Muokkaa alkuperäistä pyyntöpolkua ja määritä esimerkki:
Tämä asetus ohjaa tiedoston osoitteeseen ${GATEWAY_URL}/foo/bar, kun siihen päästäänhttps://example.org/bar , eli alkuperäinen /foo/bar muutettiin /bariksi
19、SetResponseHeader GatewayFilter Factory
Muokkaa alkuperäisen vastauksen otsikon arvoa, määritä esimerkki:
Muokkaa X-Response-Foon arvoa alkuperäisessä vastauksessa Barille
20、SetStatus GatewayFilter Factory
Muokkaa alkuperäisen vastauksen tilakoodia, konfiguraatioesimerkki:
SetStatusdin arvo voi olla joko luku tai merkkijono. Mutta sen täytyy olla Spring HttpStatus -luokan arvo. Molemmat yllä mainitut asetukset voivat palauttaa HTTP-tilakoodin 401.
21、StripPrefix GatewayFilter Factory
Alkuperäisen pyynnön polun katkaisemiseksi konfiguraatioesimerkki:
Kuten yllä olevassa konfiguraatiossa on esitetty, jos pyydetty polku on /name/bar/foo, se katkaistaan /foo:hun ja välitetään eteenpäin, eli kaksi polkua katkaistaan.
22、Retry GatewayFilter Factory
Yritä uudelleen eri vastauksille, esim. HTTP-tilakoodeille, konfigurointiesimerkki:
Seuraavat parametrit voidaan konfiguroida:
- Yritykset uudelleen: Uusintayritysten määrä
- tilat: Tilakoodi, joka täytyy kokeilla uudelleen, asetettuna org.springframework.http.HttpStatus -sivustolla
- metodit: Pyyntömetodi, joka täytyy yrittää uudelleen, arvolla org.springframework.http.HttpMethod
- series:HTTP status code sequence, arvolla org.springframework.http.HttpStatus.Series
23、RequestSize GatewayFilter Factory
Aseta maksimisallittujen pyyntöpakettien koko, konfiguraatioesimerkki:
Jos pyyntöpaketin koko ylittää asetetun arvon, palautetaan 413 Payload Too Large yhdessä errorMessage-viestin kanssa
24、Modify Request Body GatewayFilter Factory
Muokkaa alkuperäistä pyyntörunkoa ennen pyynnön välittämistä, suodatintehdas voidaan konfiguroida vain koodin perusteella, ei konfiguraatiotiedostossa. Koodiesimerkki:
Vinkkejä: Tämä suodatintehdas on BETA-tilassa, ja API saattaa muuttua tulevaisuudessa.Käytä tuotantoympäristöä varoen
25、Modify Response Body GatewayFilter Factory
Suodatintehdasta voidaan käyttää myös alkuperäisen vastausrungon sisällön muokkaamiseen, ja suodatintehdas voidaan konfiguroida vain koodin perusteella, ei konfiguraatiotiedostossa. Koodiesimerkki:
Vinkkejä: Tämä suodatintehdas on BETA-tilassa, API saattaa muuttua tulevaisuudessa, käytä sitä varovaisesti tuotantoympäristössä
26、Default Filters
Oletussuodattimia käytetään lisäämään suodatintehdas kaikille reiteille, eli eli läpäisemäänOletussuodattimen asettama suodatintehdas koskee kaikkia reittejä。 Konfiguraatioesimerkki:
(Loppu)
|