Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 9128|Válasz: 0

[Forrás] Szűrőgyárak, amelyek a Spring Cloud Gateway-be épültek

[Linket másol]
Közzétéve 2022. 02. 07. 13:36:49 | | |
Beépített szűrőgyár

Itt egy egyszerű táblázat a Spring Cloud Gateway-be beépített szűrőgyárakról, amely nem túl részletes, de gyors áttekintésként használható. Következőképpen:

Szűrőgyár
funkció
paraméter
AddRequestHeader
Fejléc hozzáadása az eredeti kéréshez
Fejléc neve és értéke
AddRequestParameter
Kérésparaméterek hozzáadása az eredeti kéréshez
Paraméter neve és értéke
AddResponseHeader
Fejlécet adj az eredeti válaszhoz
Fejléc neve és értéke
DedupeResponseHeader
Elutasítja a duplikált értékeket a válaszfejlécben
A fejléc neve és deduplikálási stratégia, amelyeket deduplikálni kell
Hystrix
A Hystrix megszakító-védelme bevezetése az útvonalon
A HystrixCommand neve
Tartalék fejlécek
Adjon hozzá specifikus kivételadatokat a fallbackUri request fejlécéhez
Fejléc neve
PrefixPath
Hozzáadj előtagot az eredeti kérési útvonalhoz
Előtag út
PreserveHostHeader
Adj hozzá egy preserveHostHeader=true tulajdonságot a kéréshez, amit az útválasztási szűrő ellenőriz, hogy eldöntse, akarod-e az eredeti Hostot küldeni
nem
RequestRateLimiter
A kérések korlátozására használt korlátozó algoritmus token vödör
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
Átirányítás a
Irányítsa át az eredeti kérést a megadott URL-re
HTTP státuszkód és átirányítási URL
EltávolítaHopByHopFejlécekSzűrő
Távolítsd el az IETF szervezet által az eredeti kéréshez előírt fejlécek sorozatát
Ez alapértelmezés szerint engedélyezett, és a konfiguráción keresztül csak mely fejléceket törölheted
Eltávolítja a KérésFejlécét
Töröld az eredeti kéréshez tartozó fejlécet
Fejléc neve
Válaszfejléc eltávolítása
Távolítsd el az eredeti válaszhoz a fejlécet
Fejléc neve
RewritePath
Írd át az eredeti kérési útvonalat
Az eredeti útregex és az átírt út regexje
RewriteResponseHeader
Írj át egy fejlécet az eredeti válaszban
Fejléc neve, érték reguláris kifejezése, átírt érték
SaveSession
Kényszerítsd be a WebSession::save műveletet, mielőtt továbbítanád a kérést
nem
secureHeaders
Adj hozzá egy sor válaszfejlécet, amelyek biztonságot szolgálnak az eredeti válaszhoz
Nincs, ezeknek a biztonsági válaszfejléceknek az értékeit módosíthatod
SetPath
Az eredeti kérési útvonal módosítása
Módosított útvonal
SetResponseHeader
Módosítsd az eredeti válaszban a fejléc értékét
Fejléc neve, a módosított érték
SetStatus
Az eredeti válasz állapotkódjának módosítása
HTTP státuszkódok, amelyek lehetnek számok vagy stringek
StripPrefix
Az eredeti kérés útvonalának lerövidítésére használták
Számokat használjunk, hogy megjelölje, hány vágandó útvonalat kell lerövidíteni
Újra
Próbáld meg újra különböző válaszokat
retries、statuses、methods、series
RequestSize
Állítsuk be a maximális kért csomagok méretét, amelyek megengedett a fogadásra. Ha a kéréscsomag mérete meghaladja a beállított értéket, akkor a 413 Payload Too Large visszatér
A kéréscsomag mérete bájtokban, az alapértelmezett érték 5M
ModifyRequestBody
Módosítsa az eredeti kérelmező tartalmát a kérés továbbítása előtt
A módosított kérvénytest tartalom
ModifyResponseBody
Az eredeti választest tartalmának módosítása
A módosított választest tartalom
Alapértelmezett
Szűrők hozzáadása minden útvonalhoz
Szűrőgyár neve és értéke

Tippek: Minden szűrőgyár megfelel egy implementációs osztálynak, és ezekAz osztály neve GatewayFilterFactory következikben kell véget érni.Ez például a Spring Cloud Gateway konvenciója, az AddRequestHeader-hez tartozó implementációs osztály az AddRequestHeaderGatewayFilterFactory. Azok a barátok, akiket érdekel a forráskód, specifikus osztályneveket is összefűzhetnek ennek a szabálynak megfelelően, hogy megtalálják ezeknek a beépített szűrőgyáraknak a megvalósítási kódját.

1、AddRequestHeader GatewayFilter Factory

Hozzáadj egy fejlécet az eredeti kéréshez, konfigurációs példa:


Hozzáadj egy X-Request-Foo nevű kérés fejlécét az eredeti kéréshez Bar értékkel

2、AddRequestParameter GatewayFilter Factory

A kérésparaméterek és értékek hozzáadása az eredeti kéréshez, konfigurációs példa:


Hozzáadjunk egy foo nevű paramétert az eredeti kéréshez, amelynek értéke bar volt, azaz: foo=bar

3、AddResponseHeader GatewayFilter Factory

Hozzáadj egy fejlécet az eredeti válaszhoz, konfigurációs példa:


Adj hozzá egy X-Request-Foo nevű válaszfejlécet, amelynek értéke Bar az eredeti válaszhoz

4、DedupeResponseHeader GatewayFilter Factory

A DedupeResponseHeader képes eltávolítani a duplikált értékeket a válaszfejlécekből a konfigurált fejlécnév és deduplikálási szabályzat alapján, amely a Spring Cloud Greenwich SR2 új funkciója, és ebben a verzióban nem használható.

MiHa a CORS (Oldó Tartományok Közötti Megoldás) fejlécét mind a Gatewayen, mind a mikroszolgáltatáson van beállítva, ha nem készül konfiguráció, akkor a CORS fejléc értéke a -> Gateway -> mikroszolgáltatás kérésével kapható, így lesz:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Láthatod, hogy ezeknek a két fejlécnek az értékei duplikáltak, ha dedlikapálni szeretnéd a két fejléc értékét, DedupeResponseHeader konfigurációs példát kell használnod:

Deduplikációs stratégia:

  • RETAIN_FIRST: Alapértelmezett, tartsd meg az első értéket
  • RETAIN_LAST: Tartsd meg az utolsó értéket
  • RETAIN_UNIQUE: Minden egyedi értéket az első megjelenésük sorrendjében tartsd


Ha átfogóbb ismeretet szeretnél a szűrőgyárról, ajánlott olvasd el a szűrőgyár forráskódját, mert a forráskód részletes jegyzeteket és példákat tartalmaz, ami jobb, mint az hivatalos dokumentáció: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Hystrix GatewayFilter Factory

Bevezetés a Hystrix megszakító-védelmének bevezetése útvonalakhoz, konfigurációs példa:


A Hystrix a Spring Cloud első generációs hibatűrő alkatrésze, de karbantartási üzemmódba lépett, és a Hystrixet a jövőben eltávolítja a Spring Cloud, helyét pedig az Alibaba Sentinel/Resilience4J veszi át. Tehát ez a cikk nem megy bele a részletekbe, ha érdekel, hivatkozhat a hivatalos dokumentációra: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

A Hystrix-et is támogatva, az előző részben leírt szűrőgyár egy konfigurációs paramétert támogat: fallbackUri, amely a kérések továbbítására szolgál egy adott URI-re, amikor kivétel bekövetkezik. A FallbackHeaders szűrőgyár fejlécet adhat hozzá egy kérés továbbításakor az URI-hez, és ennek a fejlécnek az értéke a konkrét kivételinformáció. Konfigurációs példa:


Nem megyek bele részletekbe, ha érdekel, megnézheti a hivatalos dokumentációt: FallbackHeaders GatewayFilter Factory

7、PrefixPath GatewayFilter Factory

Hozzáadj előtag útot az eredeti kérés úthoz, konfigurációs példa:


Ez a konfiguráció lehetővé teszi, hogy a ${GATEWAY_URL}/hello látogatása továbbítva legyen továbbítvahttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilter Factory

Hozzáad egy preserveHostHeader=true tulajdonságot a kéréshez, amelyet az útvonalválasztási szűrő ellenőriz, hogy eldöntse, elküldik-e az eredeti Host Headert. Konfigurációs példa:


Ha nincs beállítva, akkor a Host nevű fejlécet a Http kliens irányítja

9、RequestRateLimiter GatewayFilter Factory

A kérések korlátozására használják, és a korlátozó algoritmus egy token vödör. Konfigurációs példa:


10、RedirectTo GatewayFilter Factory

Az eredeti kérést irányítsa át a megadott URL-re, konfigurációs példa:


Ez a konfiguráció lehetővé teszi, hogy a ${GATEWAY_URL}/hello hozzáférése átirányítható https://acme.org/hello , és hordozz egyetLocation:http://acme.orgFejléc, míg a klienshez visszaadó HTTP státuszkód 302

Notes:

A HTTP státuszkódnak 3xx-nek kell lennie, pl. 301

Az URL-nek egy legitim URL-nek kell lennie, amely a Hely Fejléc értékét szolgálja

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

Az IETF szervezet által meghatározott fejlécek eltávolítására vonatkozó eredeti kéréshez az alapértelmezett törölt fejlécek a következők:


  • Kapcsolat
  • Életben maradj
  • Proxy-Authenticate
  • Proxy-Authorization
  • TE
  • Utánfutó
  • Átvitel-kódolás
  • Feljavít


Csak a konfigurációs példán keresztül határozhatod meg, mely fejléceket töröljük:


12、RemoveRequestHeader GatewayFilter Factory

Az eredeti kérés fejlécének eltávolításához konfigurálj egy példát:


Távolítsd el az eredeti kérésből az X-Request-Foo nevű kérés fejlécét

13、RemoveResponseHeader GatewayFilter Factory

Az eredeti válasz fejlécének eltávolításához konfiguráljunk egy példát:


Távolítsd el az X-Request-Foo nevű válaszfejlécet az eredeti válaszból

14、RewritePath GatewayFilter Factory

Az eredeti kérés útvonalának felülírása egy reguláris kifejezéssel, konfigurációs példa:


Ez a konfiguráció lehetővé teszi a /foo/bar elérését, hogy átírja az /bar útvonalat és továbbítsa, azaz továbbítsa https://example.org/bar。 Fontos megjegyezni, hogy a YAML szintaxis miatt a $\ szót kell használni az $ helyett

15、RewriteResponseHeader GatewayFilter Factory

Írj át egy fejlécet az eredeti válaszban, konfigurációs példa:


Ennek a konfigurációnak a jelentősége, hogy ha a válaszfejlécben az X-Response-Foo értéke /42?user=ford&password=omg!what&flag=true lesz, akkor az újraírják /42?user=ford&password=***&flag=true a beállított érték alapján, vagyis a jelszó=omg!what újraíródik jelszó=***

16、SaveSession GatewayFilter Factory

A kérés továbbítása előtt érvényesítse a WebSession::save műveletet, konfigurációs példa:


Főként halasztott adattárolásra használják (az adatok nem azonnal maradnak meg), mint a Spring Session, és biztosítani akarja, hogy a session állapot elmentődjön a kérés továbbítása előtt. Ha integrálod a Spring Secutiry-t a Spring Sessionbe, és biztosítani akarod, hogy minden biztonsági információ továbbítsa a későbbi gépekre, ezt a szűrőt be kell állítanod.

17、secureHeaders GatewayFilter Factory

A secureHeaders szűrőgyár főként ezen a blogon található ajánlásokon alapul, és egy sor válaszfejlécet adnak hozzá, amelyek biztonsági szerepet játszanak az eredeti válaszban. Alapértelmezés szerint a következő fejléceket (beleértve az értékeket is) adják hozzá:


  • 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


Ha módosítani szeretnéd ezeknek a fejléceknek az értékeit, akkor a fejlécek megfelelő toldaltagjait kell használnod, az alábbiak szerint:

  • xss-protection-header
  • szigorú szállítás-biztonság
  • Keretopciók
  • tartalom-típus-opciók
  • Referer-politika
  • tartalom-biztonság-politika
  • Letöltési lehetőségek
  • engedélyezett-cross-domain-policies


Konfigurációs példa:


Ha bizonyos fejléceket ki akarsz kapcsolni, a következő konfigurációt használhatod:

18、SetPath GatewayFilter Factory

Módosítsuk az eredeti kérési útvonalat, és konfiguráljatok egy példát:


Ez a konfiguráció lehetővé teszi, hogy a hozzáférés során továbbítják a ${GATEWAY_URL}/foo/bar formátumrahttps://example.org/bar , vagyis az eredeti /foo/bar helyett /bar-ra változott

19、SetResponseHeader GatewayFilter Factory

Módosítsuk az eredeti válasz fejlécértékét, állítsunk be egy példát:


Módosítsuk az X-Response-Foo értékét az eredeti Bar válaszban

20、SetStatus GatewayFilter Factory

Az eredeti válasz állapotkódjának módosítása, konfigurációs példa:


A SetStatusd értéke lehet szám vagy láncsor. De annak kell lennie a Spring HttpStatus enumeration osztály értékének. Mindkét fenti konfiguráció visszaadja a HTTP 401 státuszkódot.

21、StripPrefix GatewayFilter Factory

Az eredeti kérés útvonalának lerövidítéséhez konfigurációs példa:


Ahogy a fenti konfigurációban látható, ha a kért út /name/bar/foo, akkor az /foo-ra lesz lerövidítve és továbbítva kerül, vagyis két útvonalat vágnak le.

22、Retry GatewayFilter Factory

Próbáld meg újra különböző válaszokat, például HTTP státuszkódokat, konfigurációs példát:


A következő paraméterek konfigurálhatók:

  • Próbálkozások: A próbálkozások száma
  • statusok: Az állapotkód, amelyet újra meg kell próbálni, az org.springframework.http.HttpStatus adatbázisban beállítva
  • methods: Az a kérés metódus, amelyet újra kell próbálni, az org.springframework.http.HttpMethod értékkel
  • series:HTTP status code sequence, egy értékkel az org.springframework.http.HttpStatus.Series címen


23、RequestSize GatewayFilter Factory

Állítsuk be a maximális megengedett kéréscsomagok méretét, konfigurációs példa:


Ha a kéréscsomag mérete meghaladja a beállított értéket, akkor egy 413 Payload Too Large értéket kap vissza, valamint egy errorMessage

24、Modify Request Body GatewayFilter Factory

Az eredeti kérelmek törzstartalmának módosítása a kérés továbbítása előtt, a szűrőgyárat csak kód alapján lehet konfigurálni, nem a konfigurációs fájlban. Kód példa:


Tippek: Ez a szűrőgyár BETA állapotban van, és az API a jövőben változhat.Kérjük, óvatosan használd a produkciós környezetet

25、Modify Response Body GatewayFilter Factory

A szűrőgyár használható az eredeti választest tartalmának módosítására is, és a szűrőgyárat csak kód alapján lehet konfigurálni, nem a konfigurációs fájlban. Kód példa:


Tippek: Ez a szűrőgyár BETA állapotban van, az API a jövőben változhat, kérjük, óvatosan használd a gyártási környezetben

26、Default Filters

Az alapértelmezett szűrők segítségével minden útvonalhoz hozzáadnak szűrőgyárat, vagyis áthaladniAz alapértelmezett szűrő által konfigurált szűrőgyár minden útvonalra vonatkozik。 Konfigurációs példa:


(Vége)




Előző:Docker naplók töltik meg a lemezeket és az adatmigrációt
Következő:Java dynamically spliced SQL statements prevent database injection
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com