Vstavaná továreň na filtre
Tu je jednoduchá tabuľka všetkých filtračných tovární zabudovaných do Spring Cloud Gateway, ktorá nie je veľmi podrobná, ale dá sa použiť ako rýchly prehľad. Takto:
Továreň na filtre | funkcia | parameter | AddRequestHeader | Pridajte hlavičku k pôvodnej požiadavke | Názov a hodnota hlavičky | AddRequestParameter | Pridajte parametre požiadavky k pôvodnej požiadavke | Názov a hodnota parametra | AddResponseHeader | Pridajte hlavičku k pôvodnej odpovedi | Názov a hodnota hlavičky | DedupeResponseHeader | Odmietne duplicitné hodnoty v hlavičke odpovede | Názov hlavičky a stratégia deduplikácie, ktoré je potrebné deduplikovať | Hystrix | Zaviesť ochranu Hystrix proti ističom pre trasu | Názov HystrixCommand | Záložné hlavičky | Pridajte konkrétne informácie o výnimke do hlavičky požiadavky fallbackUri | Názov hlavičky | PrefixPath | Pridajte prefix k pôvodnej ceste požiadavky | Prefixová cesta | PreserveHostHeader | Pridajte vlastnosť preserveHostHeader=true do požiadavky, ktorú smerovací filter kontroluje, aby rozhodol, či chcete poslať pôvodného hostiteľa | nie | RequestRateLimiter | Algoritmus obmedzovania sa používa na obmedzovanie požiadaviek a je tokenový bucket | keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus | RedirectTo | Presmerujte pôvodnú požiadavku na určenú URL | HTTP stavový kód a presmerovacia URL | RemoveHopByHopHeadersFilter | Odstráňte sériu hlavičiek predpísaných organizáciou IETF pre pôvodnú požiadavku | Toto je predvolene povolené a môžete si v konfigurácii určiť, ktoré hlavičky sa majú vymazať | RemoveRequestHeader | Vymažte hlavičku pôvodnej požiadavky | Názov hlavičky | ReassignResponseHeader | Odstráňte hlavičku pôvodnej odpovede | Názov hlavičky | RewritePath | Prepíšte pôvodnú cestu požiadaviek | Pôvodný regex cesty a regex prepísanej cesty | RewriteResponseHeader | Prepíšte hlavičku v pôvodnej odpovedi | Názov hlavičky, regulárny výraz hodnoty, prepísaná hodnota | SaveSession | Vynuťte operáciu WebSession::save pred odoslaním požiadavky | nie | secureHeaders | Pridajte sériu hlavičiek odpovedí, ktoré slúžia ako zabezpečenie pôvodnej odpovede | Žiadne, môžete upraviť hodnoty týchto hlavičiek bezpečnostnej odpovede | SetPath | Upraviť pôvodnú cestu požiadavky | Modifikovaná cesta | SetResponseHeader | Upravte hodnotu hlavičky v pôvodnej odpovedi | Názov hlavičky, upravená hodnota | SetStatus | Upravte stavový kód pôvodnej odpovede | HTTP stavové kódy, ktoré môžu byť čísla alebo reťazce | StripPrefix | Použité na skrátenie cesty pôvodnej požiadavky | Použite čísla na označenie počtu ciest na skrátenie | Znova | Skús znova pre iné odpovede | retries、statuses、methods、series | RequestSize | Nastavte veľkosť maximálneho počtu požadovaných paketov, ktoré môžu byť prijaté. Ak veľkosť balíka požiadaviek prekročí nastavenú hodnotu, vráti sa 413 Payload Too Large | Veľkosť balíka požiadaviek je v bajtoch a predvolená hodnota je 5M | UpraviťPožiadavkové telo | Pred odoslaním požiadavky upravte pôvodný obsah tela požiadavky | Upravený obsah tela požiadaviek | ModifikovaťOdpovedné telo | Upraviť obsah pôvodného tela odpovede | Obsah upraveného telesa odpovede | Predvolený | Pridajte filtre pre všetky trasy | Názov a hodnota továrne na filtre |
Tipy: Každá továreň filtrov zodpovedá implementačnej triede, a tietoNázov triedy musí končiť na GatewayFilterFactoryToto je konvencia Spring Cloud Gateway, napríklad implementačná trieda zodpovedajúca AddRequestHeader je AddRequestHeaderGatewayFilterFactory. Priatelia, ktorí majú záujem o zdrojový kód, môžu podľa tohto pravidla spojiť konkrétne názvy tried, aby našli implementačný kód týchto vstavaných filtračných tovární.
1、AddRequestHeader GatewayFilter Factory
Pridajte hlavičku k pôvodnej požiadavke, príklad konfigurácie:
Pridajte hlavičku požiadavky s názvom X-Request-Foo s hodnotou Bar k pôvodnej požiadavke
2、AddRequestParameter GatewayFilter Factory
Pridajte parametre a hodnoty požiadaviek k pôvodnej požiadavke, príklad konfigurácie:
Pridajte parameter s názvom foo s hodnotou čiary k pôvodnej požiadavke, t.j.: foo=čiara
3、AddResponseHeader GatewayFilter Factory
Pridajte hlavičku k pôvodnej odpovedi, príklad konfigurácie:
Pridajte hlavičku odpovede s názvom X-Request-Foo s hodnotou Bar k pôvodnej odpovedi
4、DedupeResponseHeader GatewayFilter Factory
DedupeResponseHeader dokáže odstrániť duplicitné hodnoty v hlavičkách odpovedí na základe nakonfigurovaného názvu hlavičky a politiky deduplikácie, čo je nová funkcia poskytovaná spoločnosťou Spring Cloud Greenwich SR2 a v tejto verzii ju nie je možné použiť.
MyAk je CORS (Solving Cross-Domain) hlavička nastavená na bráne aj mikroservise, ak nie je vykonaná žiadna konfigurácia, potom hodnota CORS hlavičky získaná požiadavkou na -> bránu -> mikroservice, bude to takto:
Vidíte, že hodnoty týchto dvoch hlavičiek sú duplikované, ak chcete deduplikovať hodnoty týchto dvoch hlavičiek, musíte použiť DedupeResponseHeader, príklad konfigurácie:
Stratégia deduplikácie:
- RETAIN_FIRST: Default, ponechať prvú hodnotu
- RETAIN_LAST: Poslednú hodnotu si nechajte
- RETAIN_UNIQUE: Všetky unikátne hodnoty ponechať v poradí, v akom sa objavili
Ak chcete mať komplexnejšie pochopenie filter factory, odporúča sa prečítať si zdrojový kód filter factory, pretože zdrojový kód obsahuje podrobné poznámky a príklady, čo je lepšie ako oficiálna dokumentácia: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory
5、Hystrix GatewayFilter Factory
Predstavujeme ochranu Hystrix proti ističom pre trasy, príklad konfigurácie:
Hystrix je prvou generáciou odolných komponentov Spring Cloud, ale prešiel do režimu údržby a Hystrix bude v budúcnosti odstránený Spring Cloudom, nahradený Alibaba Sentinel/Resilience4J. Tento článok teda nebude zachádzať do detailov, ak máte záujem, môžete sa pozrieť na oficiálnu dokumentáciu: Hystrix GatewayFilter Factory
6、FallbackHeaders GatewayFilter Factory
Tiež podporuje Hystrix, továreň filtrov opísaná v predchádzajúcej sekcii podporuje konfiguračný parameter: fallbackUri, ktorý sa používa na preposielanie požiadaviek na konkrétne URI pri výskyte výnimky. Factory filtra FallbackHeaders môže pridať hlavičku pri presmerovaní požiadavky na URI, pričom hodnota tejto hlavičky je konkrétna informácia o výnimke. Príklad konfigurácie:
Nebudem tu zachádzať do detailov, ak máte záujem, môžete sa pozrieť na oficiálnu dokumentáciu: FallbackHeaders GatewayFilter Factory
7、PrefixPath GatewayFilter Factory
Pridajte prefix cestu k pôvodnej ceste požiadavky, príklad konfigurácie:
Táto konfigurácia preposiela návštevu na ${GATEWAY_URL}/hello nahttps://example.org/mypath/hello
8、PreserveHostHeader GatewayFilter Factory
Pridajte do požiadavky vlastnosť preserveHostHeader=true, ktorú smerovací filter kontroluje, aby rozhodol, či pošle pôvodnú hlavičku hostiteľa. Príklad konfigurácie:
Ak nie je nastavený, hlavička s názvom Host bude riadená Http klientom
9、RequestRateLimiter GatewayFilter Factory
Používa sa na obmedzovanie požiadaviek a algoritmus obmedzovania je tokenový bucket. Príklad konfigurácie:
10、RedirectTo GatewayFilter Factory
Presmerujte pôvodnú požiadavku na určenú URL, príklad konfigurácie:
Táto konfigurácia presmerováva prístup k ${GATEWAY_URL}/hello na https://acme.org/hello , a niesť jedenLocation:http://acme.orgHlavička, zatiaľ čo HTTP stavový kód, ktorý klientovi vracia, je 302
Poznámky:
HTTP stavový kód by mal byť 3xx, napr. 301
URL musí byť legitímna URL, ktorá slúži ako hodnota hlavičky polohy
11、RemoveHopByHopHeadersFilter GatewayFilter Factory
Pre pôvodnú požiadavku na odstránenie série hlavičiek špecifikovaných organizáciou IETF sú predvolené vymazané hlavičky nasledovné:
- Pripojenie
- Keep-Alive
- Proxy-autentifikácia
- Splnomocnenie
- TE
- Príves
- Prenosové kódovanie
- Upgrade
Môžete špecifikovať, ktoré hlavičky sa vymažú iba cez konfiguráciu, napríklad konfigurácia:
12、RemoveRequestHeader GatewayFilter Factory
Na odstránenie hlavičky pôvodnej požiadavky nakonfigurujte príklad:
Odstráňte hlavičku požiadavky s názvom X-Request-Foo z pôvodnej požiadavky
13、RemoveResponseHeader GatewayFilter Factory
Na odstránenie hlavičky pôvodnej odpovede nakonfigurujte príklad:
Odstráňte hlavičku odpovede s názvom X-Request-Foo z pôvodnej odpovede
14、RewritePath GatewayFilter Factory
Prepísanie pôvodnej cesty požiadaviek regulárnym výrazom, príklad konfigurácie:
Táto konfigurácia umožňuje prístup k /foo/bar, aby prepísal cestu k /bar a preposlal ju, teda preposlal na https://example.org/bar。 Všimnite si, že kvôli syntaxi YAML je potrebné použiť namiesto $ $
15、RewriteResponseHeader GatewayFilter Factory
Prepíšte hlavičku v pôvodnej odpovedi, príklad konfigurácie:
Význam tejto konfigurácie spočíva v tom, že ak je hodnota X-Response-Foo v hlavičke odpovede /42?user=ford&password=omg!what&flag=true, potom sa prepíše na /42?user=ford&password=***&flag=true podľa nakonfigurovanej hodnoty, teda heslo=omg!čo sa prepíše na password=***
16、SaveSession GatewayFilter Factory
Pred presmerovaním požiadavky vynúťte operáciu WebSession::save, príklad konfigurácie:
Používa sa hlavne na odložené ukladanie dát (dáta sa neuchovávajú okamžite), podobne ako Spring Session, a chce zabezpečiť, aby bol stav relácie uložený pred odoslaním požiadavky. Ak integrujete Spring Secutiry do Spring Session a chcete zabezpečiť, aby všetky bezpečnostné informácie boli prenášané na ďalšie stroje, musíte tento filter nakonfigurovať.
17、secureHeaders GatewayFilter Factory
Továreň filtrov secureHeaders je založená hlavne na odporúčaniach v tomto blogu, pričom pridáva sériu hlavičiek odpovedí, ktoré zohrávajú bezpečnostnú úlohu v pôvodnej odpovedi. Predvolene sa pridávajú nasledujúce hlavičky (vrátane hodnôt):
- 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
Ak chcete upraviť hodnoty týchto hlavičiek, musíte použiť príslušné prípony týchto hlavičiek, nasledovne:
- XSS-protection-header
- prísna bezpečnosť dopravy
- Možnosti rámu
- Možnosti typov obsahu
- Referrer-policy
- Obsah-bezpečnosť-politika
- Možnosti stiahnutia
- Politiky povolených naprieč doménami
Príklad konfigurácie:
Ak chcete vypnúť určité hlavičky, môžete použiť nasledujúcu konfiguráciu:
18、SetPath GatewayFilter Factory
Upravte pôvodnú cestu požiadavky a nakonfigurujte príklad:
Táto konfigurácia spôsobí, že sa pri prístupe presmeruje na ${GATEWAY_URL}/foo/barhttps://example.org/bar , teda pôvodné /foo/bar bolo zmenené na /bar
19、SetResponseHeader GatewayFilter Factory
Upravte hodnotu hlavičky v pôvodnej odpovedi, nakonfigurujte príklad:
Upraviť hodnotu X-Response-Foo v pôvodnej odpovedi na Bar
20、SetStatus GatewayFilter Factory
Upravte stavový kód pôvodnej odpovede, príklad konfigurácie:
Hodnota SetStatusd môže byť buď číslo, alebo reťazec. Ale musí to byť hodnota v triede Spring HttpStatus. Obe vyššie uvedené konfigurácie dokážu vrátiť HTTP stavový kód 401.
21、StripPrefix GatewayFilter Factory
Pre skrátenie cesty pôvodnej požiadavky, príklad konfigurácie:
Ako je ukázané v predchádzajúcej konfigurácii, ak je požadovaná cesta /name/bar/foo, potom sa skráti na /foo a prepošle smerom, teda 2 cesty budú skrátené.
22、Retry GatewayFilter Factory
Skúste znova pre rôzne odpovede, napríklad pre HTTP stavové kódy, príklad konfigurácie:
Nasledujúce parametre je možné nakonfigurovať:
- opakovania: Počet opakovaných pokusov
- statuses: Stavový kód, ktorý je potrebné zopakovať, nastavený v org.springframework.http.HttpHttpStatus
- methods: Metóda požiadavky, ktorú je potrebné zopakovať, s hodnotou v org.springframework.http.HttpHttpMethod
- series:HTTP statuscode sequence, s hodnotou v org.springframework.http.HttpHttpStatus.Series
23、RequestSize GatewayFilter Factory
Nastavte veľkosť maximálneho počtu povolených paketov požiadaviek, príklad konfigurácie:
Ak veľkosť balíka požiadaviek prekročí nastavenú hodnotu, vráti sa 413 Payload Too Large spolu s chybovou správou
24、Upraviť telo požiadaviek GatewayFilter Factory
Pred odoslaním požiadavky upravte pôvodný obsah tela požiadavky, továrenský filter môže byť konfigurovaný iba kódom, nie v konfiguračnom súbore. Príklad kódu:
Tipy: Táto továreň na filtre je v BETA stave a API sa môže v budúcnosti zmeniť.Prosím, používajte produkčné prostredie s opatrnosťou
25、Továreň na gatewayFilter Response Body
Filter factory sa dá tiež použiť na úpravu obsahu pôvodného tela odozvy a filter factory sa dá konfigurovať iba kódom, nie v konfiguračnom súbore. Príklad kódu:
Tipy: Táto továreň na filtre je v BETA stave, API sa môže v budúcnosti zmeniť, prosím, používajte ho opatrne v produkčnom prostredí
26、Predvolené filtre
Default Filters sa používa na pridanie filter factory na všetky trasy, teda na prechodTovárenský filter nastavený predvoleným filtrom sa bude vzťahovať na všetky trasy。 Príklad konfigurácie:
(Koniec)
|