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