Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 9128|Răspunde: 0

[Sursă] Fabrici de filtre integrate în Spring Cloud Gateway

[Copiază linkul]
Postat pe 07.02.2022 13:36:49 | | |
Fabrică de filtre încorporate

Iată un tabel simplu cu toate fabricile de filtre integrate în Spring Cloud Gateway, care nu este foarte detaliat, dar poate fi folosit ca o prezentare generală rapidă. Așa cum urmează:

Fabrica de filtre
funcționa
parametru
AddRequestHeader
Adaugă un Antet la cererea originală
Nume și valoare a antetului
AddRequestParameter
Adaugă parametri de cerere la cererea originală
Numele și valoarea parametrului
AddResponseHeader
Adaugă un antet la răspunsul original
Nume și valoare a antetului
DedupeResponseHeader
Respinge valorile duplicate în antetul răspunsului
Numele antetului și strategia de deduplicare care trebuie deduplicate
Hystrix
Introduceți protecția împotriva întrerupătoarelor Hystrix pentru traseu
Numele HystrixCommand
Elemente de rezervă
Adaugă informații specifice de excepție în antetul solicitării din FallbackUri
Numele antetului
PrefixPath
Adaugă un prefix pe calea cererii originale
Calea prefixului
Antetul PăstrăriiGazdului
Adaugă o proprietate preserveHostHeader=true la cerere, pe care filtrul de rutare o verifică pentru a decide dacă vrei să trimiți gazda originală
nu
RequestRateLimiter
Folosit pentru a limita cererile, algoritmul de limitare este un bucket de tokenuri
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
RedirecționareCătre
Redirecționează cererea originală către URL-ul specificat
Cod de stare HTTP și URL de redirecționare
RemoveHopByHopHeadersFilter
Eliminați o serie de antete prescrise de organizația IETF pentru cererea inițială
Acest lucru este activat implicit și poți specifica ce antete să ștergi doar prin configurare
RemoveRequestHeader
Șterge un antet pentru cererea originală
Numele antetului
RemoveResponseHeader
Elimină un antet pentru răspunsul original
Numele antetului
RewritePath
Rescrie calea cererii originale
Regexul original al căii și regexul traseului rescris
RewriteResponseHeader
Rescrie un antet în răspunsul original
Nume de antet, expresie regulată a valorii, valoare rescrisă
SaveSession
Aplică operațiunea WebSession::save înainte de a redirecționa cererea
nu
secureHeaders
Adaugă o serie de antete de răspuns care acționează ca securitate la răspunsul original
Niciunul, poți modifica valorile acestor antete de răspuns de securitate
SetPath
Modificarea traseului original al cererii
Calea modificată
SetResponseHeader
Modifică valoarea unui antet în răspunsul original
Numele antetului, valoarea modificată
SetStatus
Modifică codul de stare al răspunsului original
Coduri de stare HTTP, care pot fi numere sau șiruri
Prefix Strip
Folosit pentru a scurta calea cererii originale
Folosiți numere pentru a indica numărul de căi ce trebuie trunchiate
Reîncercare
Reîncearcă pentru răspunsuri diferite
resetări、status、methods、series
RequestSize
Setați dimensiunea pachetelor maxime solicitate care pot fi primite. Dacă dimensiunea pachetului de cerere depășește valoarea setată, se returnează 413 Payload Too Large
Dimensiunea pachetului de cerere este în octeți, iar valoarea implicită este 5M
ModifyRequestBody
Modificați conținutul original al corpului cererii înainte de a transmite cererea
Conținutul modificat al corpului cererii
ModifyResponseBody
Modifică conținutul corpului original al răspunsului
Conținutul corpului răspunsului modificat
Implicit
Adaugă filtre pentru toate rutele
Numele și valoarea fabricii filtrului

Sfaturi: Fiecare fabrică de filtre corespunde unei clase de implementare, iar acesteaNumele clasei trebuie să se termine cu GatewayFilterFactoryAceasta este o convenție a Spring Cloud Gateway, de exemplu, clasa de implementare corespunzătoare AddRequestHeader este AddRequestHeaderGatewayFilterFactory. Prietenii interesați de codul sursă pot îmbina nume specifice de clase conform acestei reguli pentru a găsi codul de implementare al acestor fabrici de filtre încorporate.

1、AddRequestHeader GatewayFilter Factory

Adaugă un antet la cererea originală, exemplu de configurare:


Adaugă un antet de cerere numit X-Request-Foo cu valoarea Bar la cererea originală

2、AddRequestParameter GatewayFilter Factory

Adaugă parametri și valori de cerere la cererea originală, exemplu de configurare:


Adaugă un parametru numit foo cu valoarea bar la cererea originală, de exemplu: foo=bar

3、AddResponseHeader GatewayFilter Factory

Adaugă un antet la răspunsul original, exemplu de configurare:


Adaugă un antet de răspuns numit X-Request-Foo cu valoarea Bar la răspunsul original

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader poate elimina valorile duplicate din anteturile de răspuns pe baza numelui antetului configurat și a politicii de deduplicare, care este o funcție nouă oferită de Spring Cloud Greenwich SR2 și care nu poate fi folosită sub această versiune.

NoiDacă antetul CORS (Solving Cross-Domain) este setat atât pe Gateway, cât și pe microserviciu, dacă nu se face nicio configurare, atunci valoarea antetului CORS obținută prin solicitarea microserviciului -> Gateway ->, va fi așa:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Poți vedea că valorile acestor două antete sunt duplicate, dacă vrei să deduplicezi valorile acestor două antete, trebuie să folosești DedupeResponseHeader, exemplu de configurare:

Strategie de deduplicare:

  • RETAIN_FIRST: Implicit, păstrează prima valoare
  • RETAIN_LAST: Păstrează ultima valoare
  • RETAIN_UNIQUE: Păstrează toate valorile unice în ordinea în care au apărut inițial


Dacă vrei să ai o înțelegere mai cuprinzătoare a fabricii de filtre, este recomandat să citești codul sursă al fabricii de filtre, deoarece codul sursă conține note și exemple detaliate, ceea ce este mai bun decât documentația oficială: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Hystrix GatewayFilter Factory

Prezentând protecția pentru întrerupătoare de circuit de la Hystrix pentru rute, exemplu de configurație:


Hystrix este prima generație de componente tolerante la defecte ale Spring Cloud, dar a intrat în modul de mentenanță, iar Hystrix va fi eliminat de Spring Cloud în viitor, fiind înlocuit de Alibaba Sentinel/Resilience4J. Așadar, acest articol nu va intra în detalii, dacă ești interesat, poți consulta documentația oficială: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

De asemenea, suportând Hystrix, fabrica de filtre descrisă în secțiunea anterioară suportă un parametru de configurare: fallbackUri, care este folosit pentru a redirecționa cererile către un anumit URI atunci când apare o excepție. Fabrica de filtre FallbackHeaders poate adăuga un antet atunci când redirecționează o cerere către URI, iar valoarea acestui antet reprezintă informația specifică de excepție. Exemplu de configurație:


Nu voi intra în detalii aici, dacă ești interesat, poți consulta documentația oficială: FallbackHeaders GatewayFilter Factory

7、PrefixPath GatewayFilter Factory

Adaugă o cale prefix la calea de cerere originală, exemplu de configurare:


Această configurație face ca vizita către ${GATEWAY_URL}/hello să fie redirecționată cătrehttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilter Factory

Adaugă o proprietate preserveHostHeader=true la cerere, pe care filtrul de rutare o verifică pentru a decide dacă să trimită antetul gazdă original. Exemplu de configurație:


Dacă nu este setat, atunci antetul numit Host va fi controlat de Clientul Http

9、RequestRateLimiter GatewayFilter Factory

Este folosit pentru a limita cererile, iar algoritmul de limitare este un bucket de tokeni. Exemplu de configurație:


10、RedirectCătre GatewayFilter Factory

Redirecționează cererea originală către URL-ul specificat, exemplu de configurare:


Această configurație face ca accesul la ${GATEWAY_URL}/hello să fie redirecționat către https://acme.org/hello , și poartă unulLocation:http://acme.orgHeader, în timp ce codul HTTP care returnează clientul este 302

Note:

Codul de stare HTTP ar trebui să fie 3xx, de exemplu 301

URL-ul trebuie să fie un URL legitim care servește drept valoare pentru Antul de Locație

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

Pentru cererea inițială de a elimina o serie de antete specificate de organizația IETF, anteturile șterse implicite sunt următoarele:


  • Conexiune
  • Menține-Vie
  • Autentificare prin procură
  • Autorizare prin procură
  • TE
  • Remorcă
  • Transfer-Codificare
  • Face upgrade


Poți specifica care antete sunt șterse doar prin configurație, exemplu de configurare:


12、RemoveRequestHeader GatewayFilter Factory

Pentru a elimina un antet pentru cererea originală, configurați un exemplu:


Eliminați antetul de cerere numit X-Request-Foo din cererea originală

13、RemoveResponseHeader GatewayFilter Factory

Pentru a elimina un antet pentru răspunsul original, configurați un exemplu:


Eliminați antetul de răspuns numit X-Request-Foo din răspunsul original

14、RewritePath GatewayFilter Factory

Suprascrierea căii originale a cererii cu o expresie regulată, exemplu de configurație:


Această configurație permite accesul la /foo/bar pentru a rescrie calea către /bar și a o redirecționa, adică a fi redirecționată către https://example.org/bar。 Rețineți că, din cauza sintaxei YAML, trebuie folosit $\ în loc de $

15、RewriteResponseHeader GatewayFilter Factory

Rescrie un antet în răspunsul original, exemplu de configurare:


Semnificația acestei configurații este că, dacă valoarea X-Response-Foo din antetul răspunsului este /42?user=ford&password=omg!what&flag=true, atunci va fi rescrisă în /42?user=ford&password=***&flag=true conform valorii configurate, adică parola=omg!ce va fi rescris în parolă=***

16、SaveSession GatewayFilter Factory

Înainte de a redirecționa cererea, aplică operația WebSession::save, exemplu de configurare:


Este folosit în principal pentru stocarea amânată a datelor (datele nu sunt menținute imediat), cum ar fi Spring Session, și urmărește să se asigure că starea sesiunii este salvată înainte ca cererea să fie redirecționată. Dacă integrezi Spring Security-ul în Spring Session și vrei să te asiguri că toate informațiile de securitate sunt transmise către mașinile ulterioare, trebuie să configurezi acest filtru.

17、secureHeaders GatewayFilter Factory

Fabrica de filtre secureHeaders se bazează în principal pe recomandările din acest blog, adăugând o serie de antete de răspuns care joacă un rol de securitate în răspunsul original. Implicit, următoarele antete (inclusiv valorile) sunt adăugate:


  • 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


Dacă doriți să modificați valorile acestor antete, atunci trebuie să folosiți sufixele corespunzătoare acestor antete, după cum urmează:

  • Xss-protect-header
  • Securitate strictă a transporturilor
  • Opțiuni de cadre
  • opțiuni-tip-conținut
  • Politica de referință
  • Politică-Securitate-Conținut
  • opțiuni de descărcare
  • politici permise-cross-domain-


Exemplu de configurație:


Dacă doriți să dezactivați anumite antete, puteți folosi următoarea configurație:

18、SetPath GatewayFilter Factory

Modificați calea cererii originale și configurați un exemplu:


Această configurație îl face redirecționat la ${GATEWAY_URL}/foo/bar când este accesathttps://example.org/bar , adică /foo/bar original a fost schimbat în /bar

19、SetResponseHeader GatewayFilter Factory

Modifică valoarea unui antet în răspunsul original, configurează un exemplu:


Modifică valoarea X-Response-Foo în răspunsul original la Bar

20、SetStatus GatewayFilter Factory

Modifică codul de stare al răspunsului original, exemplu de configurare:


Valoarea lui SetStatusd poate fi fie un număr, fie un șir. Dar trebuie să fie valoarea din clasa de enumerare Spring HttpStatus. Ambele configurații de mai sus pot returna codul HTTP 401.

21、StripPrefix GatewayFilter Factory

Pentru trunchierea drumului cererii originale, exemplu de configurare:


Așa cum s-a arătat în configurația de mai sus, dacă calea solicitată este /name/bar/foo, atunci va fi trunchiată la /foo și redirecționată, adică 2 căi vor fi trunchiate.

22、Retry GatewayFilter Factory

Reîncearcă pentru răspunsuri diferite, de exemplu pentru coduri de stare HTTP, exemplu de configurare:


Următorii parametri pot fi configurați:

  • reîncercări: Numărul de încercări
  • statuses: Codul de stare care trebuie reîncercat, setat în org.springframework.http.HttpHttpStatus
  • Metode: Metoda cererii care trebuie reîncercată, cu o valoare în org.springframework.http.HttpHttpMethod
  • secvență de coduri de stare HTTP, cu o valoare în org.springframework.http.Http.HttpStatus.Series


23、RequestSize GatewayFilter Factory

Setați dimensiunea pachetelor maxime de solicitare permise să fie primite, exemplu de configurare:


Dacă dimensiunea pachetului de solicitare depășește valoarea setată, un 413 Payload Too Large este returnat împreună cu un mesaj de eroare

24、Modificare Request Body GatewayFilter Factory

Modifică conținutul original al corpului cererii înainte de a redirecționa cererea, fabrica filtrelor poate fi configurată doar prin cod, nu și prin fișierul de configurare. Exemplu de cod:


Sfaturi: Această fabrică de filtre este în stare BETA, iar API-ul s-ar putea schimba în viitor.Vă rugăm să folosiți mediul de producție cu prudență

25、Modifică corpul de răspuns Gateway Filter Factory

Fabrica de filtre poate fi folosită și pentru a modifica conținutul corpului de răspuns original, iar fabrica de filtre poate fi configurată doar prin cod, nu și în fișierul de configurare. Exemplu de cod:


Sfaturi: Această fabrică de filtre este în stare BETA, API-ul s-ar putea schimba în viitor, vă rugăm să o folosiți cu prudență în mediul de producție

26、Filtre implicite

Filtrele implicite sunt folosite pentru a adăuga o fabrică de filtre tuturor rutelor, adică pentru a treceFabrica filtrelor configurată de Filtrul Implicit se va aplica tuturor rutelor。 Exemplu de configurație:


(Sfârșit)




Precedent:Jurnalele Docker umplu discuri și migrarea datelor
Următor:Instrucțiunile SQL splicing dinamic în Java împiedică injectarea bazei de date
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com