Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 9128|Odpoveď: 0

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

[Kopírovať odkaz]
Zverejnené 7. 2. 2022 13:36:49 | | |
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:


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




Predchádzajúci:Docker logy zapĺňajú disky a migrujú dáta
Budúci:Java dynamicky spájané SQL príkazy zabraňujú injekcii databázy
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com