Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 9128|Odpověď: 0

[Zdroj] Filtrační továrny zabudované do Spring Cloud Gateway

[Kopírovat odkaz]
Zveřejněno 07.02.2022 13:36:49 | | |
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:


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




Předchozí:Docker logy zaplňují disky a migrují data
Další:Java dynamicky splicované SQL příkazy zabraňují injekci databáze
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com