Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 9128|Vastaus: 0

[Lähde] Spring Cloud Gatewayhin rakennetut suodatintehtaat

[Kopioi linkki]
Julkaistu 7.2.2022 13.36.49 | | |
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:


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




Edellinen:Docker-lokit täyttävät levyjä ja datan siirtoa
Seuraava:Java-dynaamisesti spliced SQL-lauseet estävät tietokannan injektionin
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com