Vestavěná továrna na filtry
Zde je jednoduchá tabulka všech filtračních továren zabudovaných do Spring Cloud Gateway, která není příliš podrobná, ale může sloužit jako rychlý přehled. Následovně:
Továrna na filtry | funkce | parametr | AddRequestHeader | Přidejte hlavičku k původnímu požadavku | Název a hodnota hlavičky | AddRequestParameter | Přidejte parametry požadavku k původnímu požadavku | Název a hodnota parametru | AddResponseHeader | Přidejte hlavičku k původní odpovědi | Název a hodnota hlavičky | DedupeResponseHeader | Odmítá duplicitní hodnoty v hlavičce odpovědi | Název hlavičky a strategie deduplikace, které je třeba deduplikovat | Hystrix | Zaveďte ochranu Hystrixových jističů pro trasu | Jméno HystrixCommand | Záložní hlavičky | Přidejte konkrétní informace o výjimkách do hlavičky požadavku fallbackUri | Název hlavičky | PrefixPath | Přidejte prefix k původní cestě požadavku | Prefix path | PreserveHostHeader | Přidejte do požadavku vlastnost preserveHostHeader=true, kterou směrovací filtr kontroluje, aby rozhodl, zda chcete poslat původního hostitele | ne | RequestRateLimiter | Algoritmus pro omezení požadavků se používá jako token bucket | keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus | RedirectTo | Přesměrujte původní požadavek na určenou URL | HTTP stavový kód a přesměrovací URL | OdstranitFiltr záhlaví HopHopBy | Odstraňte sérii hlaviček předepsaných organizací IETF pro původní požadavek | To je ve výchozím nastavení povoleno a můžete si v konfiguraci určit, které hlavičky se smažou pouze | RemoveRequestHeader | Smazat hlavičku původního požadavku | Název hlavičky | Reremove ResponseHeader | Odstraňte hlavičku původní odpovědi | Název hlavičky | RewritePath | Přepiš původní cestu požadavku | Původní regex cesty a regex přepsané cesty | RewriteResponseHeader | Přepiš hlavičku v původní odpovědi | Název hlavičky, regulární výraz hodnoty, přepsání hodnoty | SaveSession | Před přesměrováním požadavku vynuťte operaci WebSession::save | ne | secureHeaders | Přidejte řadu hlaviček odezvy, které slouží jako zabezpečení k původní odpovědi | Žádné, hodnoty těchto hlaviček bezpečnostních reakcí můžete upravit | SetPath | Upravte původní cestu požadavku | Upravená cesta | SetResponseHeader | Upravte hodnotu hlavičky v původní odpovědi | Název hlavičky, upravená hodnota | SetStatus | Upravte stavový kód původní odpovědi | HTTP stavové kódy, které mohou být čísla nebo řetězce | StripPrefix | Použito k zkrácení cesty původního požadavku | Použijte čísla k označení počtu cest, které mají být zkráceny | Zkusit ještě jednou | Zkuste to znovu pro jiné odpovědi | retries、statuses、methods、series、series | RequestSize | Nastavte velikost maximálního počtu požadovaných paketů, které mohou být přijaty. Pokud velikost balíku požadavku překročí nastavenou hodnotu, vrátí se 413 Payload Too Large | Velikost balíčku požadavků je v bajtech a výchozí hodnota je 5M | UpravitŽádostiTělo | Před odesláním požadavku upravte původní obsah těla požadavku | Upravený obsah těla požadavků | ModifikovatResponseBody | Upravte obsah původního těla odpovědi | Obsah upraveného tělesa odezvy | Výchozí | Přidejte filtry pro všechny trasy | Název a hodnota továrny na filtry |
Tipy: Každá filtrační továrna odpovídá implementační třídě, a tytoNázev třídy musí končit na GatewayFilterFactoryTo je konvence Spring Cloud Gateway, například implementační třída odpovídající AddRequestHeader je AddRequestHeaderGatewayFilterFactory. Přátelé, kteří mají zájem o zdrojový kód, mohou podle tohoto pravidla spojit konkrétní názvy tříd, aby našli implementační kód těchto vestavěných filtračních továren.
1、AddRequestHeader GatewayFilter Factory
Přidejte hlavičku k původnímu požadavku, příklad konfigurace:
Přidejte hlavičku požadavku s názvem X-Request-Foo s hodnotou Bar k původnímu požadavku
2、AddRequestParameter GatewayFilter Factory
Přidejte parametry a hodnoty požadavku k původnímu požadavku, příklad konfigurace:
Přidejte parametr nazvaný foo s hodnotou čáry k původnímu požadavku, tj. foo=čára
3、AddResponseHeader GatewayFilter Factory
Přidejte hlavičku k původní odpovědi, příklad konfigurace:
Přidejte hlavičku odpovědi s názvem X-Request-Foo s hodnotou Bar k původní odpovědi
4、DedupeResponseHeader GatewayFilter Factory
DedupeResponseHeader může odstranit duplicitní hodnoty v hlavičkách odpovědí na základě konfigurovaného názvu hlavičky a politiky deduplikace, což je nová funkce poskytovaná Spring Cloud Greenwich SR2 a nelze ji použít v této verzi.
MyPokud je CORS (Solving Cross-Domain) hlavička nastavena jak na bráně, tak na mikroservisu, pokud není provedena žádná konfigurace, pak hodnota CORS hlavičky získána požadavkem -> brány -> mikroservisu, bude to takto:
Vidíte, že hodnoty těchto dvou hlaviček jsou zdvojené, pokud chcete deduplikovat hodnoty těchto dvou hlaviček, musíte použít DedupeResponseHeader, příklad konfigurace:
Strategie deduplikace:
- RETAIN_FIRST: Výchozí, zachovejte první hodnotu
- RETAIN_LAST: Poslední hodnotu si nechte
- RETAIN_UNIQUE: Unechte všechny unikátní hodnoty v pořadí, v jakém se objevily
Pokud chcete mít komplexnější pochopení továrny na filtry, doporučuje se přečíst si zdrojový kód továrny na filtry, protože zdrojový kód obsahuje podrobné poznámky a příklady, což je lepší než oficiální dokumentace: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory
5、Továrna na filtry brány Hystrix
Představujeme ochranu jističe Hystrix pro trasy, příklad konfigurace:
Hystrix je první generací odolných komponent Spring Cloud, ale vstoupil do režimu údržby a Hystrix bude v budoucnu odstraněn Spring Cloudem, nahrazen Alibaba Sentinel/Resilience4J. Tento článek tedy nebude zacházet do podrobností, pokud máte zájem, můžete se podívat na oficiální dokumentaci: Hystrix GatewayFilter Factory
6、FallbackHeaders GatewayFilter Factory
Také podporuje Hystrix továrna filtrů popsaná v předchozí sekci a podporuje konfigurační parametr: fallbackUri, který slouží k přeposílání požadavků na konkrétní URI při výskytu výjimky. Továrna filtrů FallbackHeaders může při přeposílání požadavku na URI přidat hlavičku a hodnota této hlavičky je konkrétní informace o výjimce. Příklad konfigurace:
Nebudu zde zacházet do detailů, pokud máte zájem, můžete se podívat na oficiální dokumentaci: FallbackHeaders GatewayFilter Factory
7、PrefixPath GatewayFilter Factory
Přidejte cestu k původní cestě požadavku, příklad konfigurace:
Tato konfigurace přesměruje návštěvu do ${GATEWAY_URL}/hello nahttps://example.org/mypath/hello
8、PreserveHostHeader GatewayFilter Factory
Přidejte vlastnost preserveHostHeader=true k požadavku, kterou směrovací filtr kontroluje, aby rozhodl, zda pošle původní Host Header. Příklad konfigurace:
Pokud není nastaveno, pak hlavička nazvaná Host bude řízena Http klientem
9、RequestRateLimiter GatewayFilter Factory
Používá se k omezení požadavků a algoritmus omezování je tokenový bucket. Příklad konfigurace:
10、RedirectTo GatewayFilter Factory
Přesměrujte původní požadavek na určenou URL, příklad konfigurace:
Tato konfigurace přesměrovává přístup k ${GATEWAY_URL}/hello na https://acme.org/hello , a nesou jednuLocation:http://acme.orgHlavička, zatímco HTTP stavový kód, který klienta vrací, je 302
Poznámky:
HTTP stavový kód by měl být 3xx, např. 301
URL musí být legitimní URL, která slouží jako hodnota hlavičky polohy
11、OdstranitHopByHopHeadersFiltr GatewayFilter Factory
Pro původní požadavek na odstranění série hlaviček specifikovaných organizací IETF jsou výchozí smazané hlavičky následující:
- Připojení
- Keep-Alive
- Proxy-Autentizace
- Zprostředkování
- TE
- Přívěs
- Přenosové kódování
- Upgrade
Můžete určit, které hlavičky se mažou pouze v konfiguraci, například konfigurace:
12、RemoveRequestHeader GatewayFilter Factory
Pro odstranění hlavičky původního požadavku nakonfigurujte příklad:
Odstraňte hlavičku požadavku s názvem X-Request-Foo z původního požadavku
13、RemoveResponseHeader GatewayFilter Factory
Pro odstranění hlavičky původní odpovědi nakonfigurujte příklad:
Odstraňte hlavičku odpovědi s názvem X-Request-Foo z původní odpovědi
14、RewritePath GatewayFilter Factory
Přepisování původní cesty požadavku regulárním výrazem, příklad konfigurace:
Tato konfigurace umožňuje přístup k /foo/bar, aby přepisovalo cestu k /bar a přesměrovalo ji, tj. přesměrovalo ji na https://example.org/bar。 Všimněte si, že kvůli syntaxi YAML je třeba použít místo $ $
15、RewriteResponseHeader GatewayFilter Factory
Přepiš hlavičku v původní odpovědi, příklad konfigurace:
Význam této konfigurace spočívá v tom, že pokud je hodnota X-Response-Foo v hlavičce odpovědi /42?user=ford&password=omg!what&flag=true, pak bude přepsána na /42?user=ford&password=***&flag=true podle nastavené hodnoty, tedy heslo=omg!co bude přepisováno na password=***
16、SaveSession GatewayFilter Factory
Před přesměrováním požadavku vynuťte operaci WebSession::save, například konfigurace:
Používá se hlavně pro odložené ukládání dat (data nejsou ihned uchovávána) jako Spring Session a chce zajistit, aby stav relace byl uložen před odesláním požadavku. Pokud integrujete Spring Secutiry do Spring Session a chcete zajistit, aby všechny bezpečnostní informace byly přenášeny na stroje za servery, musíte tento filtr nastavit.
17、secureHeaders GatewayFilter Factory
Továrna na filtry secureHeaders je založena především na doporučeních v tomto blogu a přidává sérii hlaviček odpovědí, které hrají bezpečnostní roli v původní odpovědi. Ve výchozím nastavení jsou přidány následující hlavičky (včetně hodnot):
- 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
Pokud chcete upravit hodnoty těchto hlaviček, musíte použít odpovídající přípony těchto hlaviček, a to následovně:
- XSS-protection-header
- přísná bezpečnost dopravy
- Možnosti rámu
- Možnosti typu obsahu
- Referrer-Policy
- Obsah-Bezpečnost-Politika
- Možnosti stažení
- Povolené přeshraniční politiky
Příklad konfigurace:
Pokud chcete některé hlavičky vypnout, můžete použít následující konfiguraci:
18、SetPath GatewayFilter Factory
Upravte původní cestu požadavku a nakonfigurujte příklad:
Tato konfigurace způsobí, že se při přístupu přesměruje na ${GATEWAY_URL}/foo/barhttps://example.org/bar , tedy původní /foo/bar byl změněn na /bar
19、SetResponseHeader GatewayFilter Factory
Upravte hodnotu hlavičky v původní odpovědi, nakonfigurujte příklad:
Upravte hodnotu X-Response-Foo v původní odpovědi na Bar
20、SetStatus GatewayFilter Factory
Upravte stavový kód původní odpovědi, příklad konfigurace:
Hodnota SetStatusd může být buď číslo, nebo řetězec. Ale musí to být hodnota v třídě Spring HttpStatus. Obě výše uvedené konfigurace mohou vracet HTTP stavový kód 401.
21、StripPrefix GatewayFilter Factory
Pro zkrácení cesty původního požadavku, příklad konfigurace:
Jak je ukázáno v předchozí konfiguraci, pokud je požadovaná cesta /name/bar/foo, bude zkrácena na /foo a přesměrována, tedy 2 cesty budou zkráceny.
22、Obnovit GatewayFilter Factory
Zkuste to znovu pro různé odpovědi, např. pro HTTP stavové kódy, příklad konfigurace:
Následující parametry lze nastavit:
- opakované pokusy: Počet pokusů
- statuses: Stavový kód, který je třeba znovu zkusit, nastavený v org.springframework.http.HttpHttpStatus
- methods: Metoda požadavku, kterou je třeba znovu vyzkoušet, s hodnotou v org.springframework.http.HttpHttpMethod
- series:HTTP statusový kód, s hodnotou v org.springframework.http.HttpHttpHttpStatus.Series
23、RequestSize GatewayFilter Factory
Nastavte velikost maximálního počtu povolených paketů požadavků, například konfigurace:
Pokud velikost balíčku požadavků překročí nastavenou hodnotu, vrátí se užitečný obsah 413 Too Large spolu s chybovou zprávou
24、Modifikace těla požadavků GatewayFilter Factory
Před odesláním požadavku upravte původní obsah těla požadavku, továrna filtrů může být konfigurována pouze podle kódu, nikoli v konfiguračním souboru. Příklad kódu:
Tipy: Tato filtrační továrna je ve stavu BETA a API se může v budoucnu změnit.Prosím, používejte produkční prostředí s opatrností
25、Továrna na bránu filtrů pro úpravu těla reakce
Filtrační továrna může být také použita k úpravě obsahu původního tělesa odezvy a filtrační továrna může být konfigurována pouze kódem, nikoli v konfiguračním souboru. Příklad kódu:
Tipy: Tato továrna na filtry je v BETA stavu, API se může v budoucnu změnit, používejte jej prosím opatrně v produkčním prostředí
26、Výchozí filtry
Výchozí filtry slouží k přidání tovární filtrace ke všem trasám, tedy k předáváníFiltrační továrna nastavená výchozím filtrem se bude vztahovat na všechny trasy。 Příklad konfigurace:
(Konec)
|