Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 9128|Risposta: 0

[Fonte] Fabbriche di filtri integrate nel Spring Cloud Gateway

[Copiato link]
Pubblicato su 07/02/2022 13:36:49 | | |
Fabbrica di filtri integrata

Ecco una tabella semplice di tutte le fabbriche di filtri integrate in Spring Cloud Gateway, che non è molto dettagliata, ma può essere usata come panoramica rapida. Come segue:

Fabbrica di filtri
funzione
parametro
AddRequestHeader
Aggiungi un Header alla richiesta originale
Nome e valore dell'intestazione
AddRequestParameter
Aggiungi parametri di richiesta alla richiesta originale
Nome e valore del parametro
AddResponseHeader
Aggiungi un'intestazione alla risposta originale
Nome e valore dell'intestazione
DedupeResponseHeader
Rifiuta i valori duplicati nell'intestazione della risposta
Il nome dell'intestazione e la strategia di deduplicazione che devono essere deduplicate
Hystrix
Introdurre la protezione degli interruttori automatici di Hystrix per il percorso
Il nome di HystrixCommand
Header di Riserva
Aggiungi informazioni specifiche di eccezione all'intestazione della richiesta dell'Uri di FallbackUri
Nome dell'intestazione
PrefixPath
Aggiungi un prefisso al percorso di richiesta originale
Percorso prefisso
PreserveHostHeader
Aggiungi una proprietà preserveHostHeader=true alla richiesta, che il filtro di routing controlla per decidere se vuoi inviare l'host originale
non
RequestRateLimiter
Utilizzato per limitare le richieste, l'algoritmo di throttling è un bucket di token
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
Reindirizzato
Reindirizza la richiesta originale all'URL specificato
Codice di stato HTTP e URL di reindirizzamento
RemoveHopByHopHeadersFilter
Rimuovere una serie di intestazioni prescritte dall'organizzazione IETF per la richiesta originale
Questo è abilitato di default e puoi specificare quali intestazioni eliminare tramite la configurazione
RemoveRequestHeader
Elimina un'intestazione per la richiesta originale
Nome dell'intestazione
RemoveResponseHeader
Rimuovere un'intestazione per la risposta originale
Nome dell'intestazione
Percorso di riscrittura
Riscrive il percorso di richiesta originale
Il regex originale del percorso e il regex del percorso riscritto
RewriteResponseHeader
Riscrivi un'intestazione nella risposta originale
Nome dell'intenatura, espressione regolare del valore, valore riscritto
SaveSession
Applica l'operazione WebSession::save prima di inoltrare la richiesta
non
Header secur
Aggiungi una serie di intestazioni di risposta che agiscono come sicurezza alla risposta originale
Nessuno, puoi modificare i valori di queste intestazioni di risposta di sicurezza
SetPath
Modifica il percorso di richiesta originale
Percorso modificato
SetResponseHeader
Modifica il valore di un'intestazione nella risposta originale
Nome dell'intenatura, il valore modificato
SetStatus
Modifica il codice di stato della risposta originale
Codici di stato HTTP, che possono essere numeri o stringhe
StripPrefisso
Usata per troncare il percorso della richiesta originale
Usa i numeri per indicare il numero di percorsi da troncare
Ripetere
Riprova per risposte diverse
retries、status、methods、series
RequestSize
Imposta la dimensione dei pacchetti richiesti al massimo che possono essere ricevuti. Se la dimensione del pacchetto richiede supera il valore impostato, viene restituito 413 Payload Too Large
La dimensione del pacchetto richiesta è in byte e il valore predefinito è 5M
ModificaRichiestaCorpo
Modifica il contenuto originale del corpo della richiesta prima di inoltrare la richiesta
Contenuto del corpo della richiesta modificato
ModificaRispostaCorpo
Modifica il contenuto del corpo originale della risposta
Il contenuto del corpo della risposta modificato
Default
Aggiungi filtri per tutte le rotte
Nome e valore della fabbrica del filtro

Consigli: Ogni fabbrica di filtri corrisponde a una classe di implementazione, e questeIl nome della classe deve terminare con GatewayFilterFactoryQuesta è una convenzione di Spring Cloud Gateway, ad esempio, la classe di implementazione corrispondente a AddRequestHeader è AddRequestHeaderGatewayFilterFactory. Gli amici interessati al codice sorgente possono splicare nomi di classe specifici secondo questa regola per trovare il codice di implementazione di queste fabbriche di filtri integrate.

1、AddRequestHeader GatewayFilter Factory

Aggiungi un'intestazione alla richiesta originale, esempio di configurazione:


Aggiungi un'intestazione di richiesta chiamata X-Request-Foo con valore Bar alla richiesta originale

2、AddRequestParameter GatewayFilter Factory

Aggiungi parametri e valori della richiesta alla richiesta originale, esempio di configurazione:


Aggiungi un parametro chiamato foo con valore di bar alla richiesta originale, cioè: foo=bar

3、AddResponseHeader GatewayFilter Factory

Aggiungi un'intestazione alla risposta originale, esempio di configurazione:


Aggiungi un'intestazione di risposta chiamata X-Request-Foo con valore Bar alla risposta originale

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader può rimuovere valori duplicati nelle intestazioni di risposta in base al nome dell'intestazione configurato e alla politica di deduplicazione, una nuova funzionalità fornita da Spring Cloud Greenwich SR2 e che non può essere utilizzata in questa versione.

NoiSe l'intestazione CORS (Solving Cross-Domain) è impostata sia sul Gateway che sul microservizio, se non viene effettuata alcuna configurazione, allora il valore dell'Intestazione CORS ottenuto richiedendo il microservizio -> Gateway ->, sarà così:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Puoi vedere che i valori di queste due intestazioni sono duplicati; se vuoi deduplicare i valori di queste due intestazioni, devi usare DedupeResponseHeader, esempio di configurazione:

Strategia di deduplicazione:

  • RETAIN_FIRST: Default, mantenere il primo valore
  • RETAIN_LAST: Tieni l'ultimo valore
  • RETAIN_UNIQUE: Mantenere tutti i valori unici nell'ordine in cui sono apparsi per la prima volta


Se vuoi avere una comprensione più completa della factory dei filtri, è consigliato leggere il codice sorgente della fabbrica dei filtri, perché il codice sorgente contiene note dettagliate ed esempi, che sono migliori della documentazione ufficiale: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Hystrix GatewayFilter Factory

Vi presentiamo la protezione contro gli interruttori automatici di Hystrix per i percorsi, esempio di configurazione:


Hystrix è la prima generazione di componenti tolleranti ai guasti di Spring Cloud, ma è entrato in modalità di manutenzione, e Hystrix sarà rimosso da Spring Cloud in futuro, sostituito da Alibaba Sentinel/Resilience4J. Quindi questo articolo non entrerà nei dettagli; se sei interessato, puoi consultare la documentazione ufficiale: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

Supportando anche Hystrix, la fabbrica di filtri descritta nella sezione precedente supporta un parametro di configurazione: fallbackUri, che viene utilizzato per inoltrare le richieste a uno specifico URI quando si verifica un'eccezione. La fabbrica di filtri FallbackHeaders può aggiungere un'intestazione quando inoltra una richiesta all'URI, e il valore di questa intestazione è l'informazione specifica delle eccezioni. Esempio di configurazione:


Non entrerò nei dettagli qui, se sei interessato puoi consultare la documentazione ufficiale: FallbackHeaders GatewayFilter Factory

7、PrefixPath GatewayFilter Factory

Aggiungi un percorso prefisso al percorso di richiesta originale, esempio di configurazione:


Questa configurazione rende la visita a ${GATEWAY_URL}/hello inoltrata ahttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilter Factory

Aggiungi una proprietà preserveHostHeader=true alla richiesta, che il filtro di routing controlla per decidere se inviare l'Host Header originale. Esempio di configurazione:


Se non impostato, allora l'intestazione chiamata Host sarà controllata dal Client Http

9、ToolRateLimiter GatewayFilter Factory

Viene utilizzato per limitare le richieste, e l'algoritmo di throttling è un bucket di token. Esempio di configurazione:


10、Redirect To GatewayFilter Factory

Reindirizza la richiesta originale all'URL specificato, esempio di configurazione:


Questa configurazione rende l'accesso a ${GATEWAY_URL}/hello reindirizzato a https://acme.org/hello , e ne porti unoLocation:http://acme.orgHeader, mentre il codice di stato HTTP che restituisce il client è 302

Note:

Il codice di stato HTTP dovrebbe essere 3xx, ad esempio 301

L'URL deve essere un URL legittimo che funge da valore dell'Intestazione di Posizione

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

Per la richiesta originale di rimuovere una serie di intestazioni specificate dall'organizzazione IETF, le intestazioni eliminate di default sono le seguenti:


  • Connessione
  • Mantenersi in vita
  • Autenticazione tramite procura
  • Autorizzazione per procura
  • TE
  • Rimorchio
  • Codifica di trasferimento
  • Aggiornamento


Puoi specificare quali intestazioni vengono eliminate solo tramite la configurazione, esempio di configurazione:


12、RemoveRequestHeader GatewayFilter Factory

Per rimuovere un'intestazione per la richiesta originale, configura un esempio:


Rimuovi l'intestazione della richiesta chiamata X-Request-Foo dalla richiesta originale

13、RemoveResponseHeader GatewayFilter Factory

Per rimuovere un'intestazione per la risposta originale, configura un esempio:


Rimuovi l'intestazione di risposta chiamata X-Request-Foo dalla risposta originale

14、RewritePath GatewayFilter Factory

Sovrascrivere il percorso di richiesta originale con un'espressione regolare, esempio di configurazione:


Questa configurazione consente di accedere a /foo/bar per riscrivere il percorso verso /bar e inoltrarlo, cioè inoltrarlo a https://example.org/bar。 Si noti che, a causa della sintassi YAML, è necessario usare $\ invece di $

15、RewriteResponseHeader GatewayFilter Factory

Riscrivi un'intestazione nella risposta originale, esempio di configurazione:


Il significato di questa configurazione è che se il valore di X-Response-Foo nell'intestazione di risposta è /42?user=ford&password=omg!what&flag=true, allora verrà riscritto in /42?user=ford&password=***&flag=true secondo il valore configurato, cioè la password=omg!cosa verrà riscritto in password=***

16、SaveSession GatewayFilter Factory

Prima di inoltrare la richiesta, applica l'operazione WebSession::save, esempio di configurazione:


Viene utilizzato principalmente per l'archiviazione differita dei dati (i dati non vengono conservati immediatamente) come Spring Session, e vuole garantire che lo stato della sessione venga salvato prima che la richiesta venga inoltrata. Se integri Spring Security, in Spring Session, e vuoi assicurarti che tutte le informazioni di sicurezza vengano trasmesse alle macchine a valle, devi configurare questo filtro.

17、secureHeaders GatewayFilter Factory

La fabbrica di filtri secureHeaders si basa principalmente sulle raccomandazioni di questo blog, aggiungendo una serie di header di risposta che svolgono un ruolo di sicurezza nella risposta originale. Per impostazione predefinita, vengono aggiunti i seguenti Header (inclusi i valori):


  • 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


Se vuoi modificare i valori di queste Header, allora devi usare i suffissi corrispondenti di queste Header, come segue:

  • Testa di protezione XSS
  • Sicurezza dei trasporti rigorosi
  • Opzioni di frame
  • Opzioni di tipo di contenuto
  • Politica dei referenti
  • Politica-Sicurezza-dei Contenuti
  • opzioni di download
  • politiche cross-domain-permesse


Esempio di configurazione:


Se vuoi disabilitare alcune intestazioni, puoi usare la seguente configurazione:

18、SetPath GatewayFilter Factory

Modifica il percorso di richiesta originale e configura un esempio:


Questa configurazione lo rende inoltrato a ${GATEWAY_URL}/foo/bar quando si accedehttps://example.org/bar , cioè, il /foo/bar originale è stato cambiato in /bar

19、SetResponseHeader GatewayFilter Factory

Modifica il valore di un'intestazione nella risposta originale, configura un esempio:


Modifica il valore di X-Response-Foo nella risposta originale a Bar

20、SetStatus GatewayFilter Factory

Modifica il codice di stato della risposta originale, esempio di configurazione:


Il valore di SetStatusd può essere sia un numero che una stringa. Ma deve essere il valore nella classe di enumerazione Spring HttpStatus. Entrambe le configurazioni sopra elencate possono restituire il codice di stato HTTP 401.

21、StripPrefix GatewayFilter Factory

Per troncare il percorso della richiesta originale, esempio di configurazione:


Come mostrato nella configurazione sopra, se il percorso richiesto è /name/bar/foo, allora verrà troncato a /foo e inoltrato, cioè 2 percorsi verranno troncati.

22、Retry GatewayFilter Factory

Riprova per risposte diverse, ad esempio per codici di stato HTTP, esempio di configurazione:


I seguenti parametri possono essere configurati:

  • Ritenti di ritento: Il numero di tentativi
  • status: Il codice di stato che deve essere riprovato, impostato in org.springframework.http.HttpHttpStatus
  • metodi: Il metodo di richiesta che deve essere riprovato, con un valore in org.springframework.http.HttpHttpMetodo
  • serie di codice di stato HTTP, con un valore in org.springframework.http.Http.HttpStatus.Series


23、ToolSizeGatewayFilter Factory

Imposta la dimensione dei pacchetti di richiesta massimi consentiti da ricevere, esempio di configurazione:


Se la dimensione del pacchetto richiede supera il valore impostato, viene restituito un Payload 413 Too Large insieme a un messaggio di errore

24、Modifica Richiesta Corpo GatewayFilter Factory

Modifica il contenuto originale del corpo della richiesta prima di inoltrare la richiesta, la fabbrica del filtro può essere configurata solo tramite codice, non nel file di configurazione. Esempio di codice:


Consigli: questa fabbrica di filtri è in stato BETA e l'API potrebbe cambiare in futuro.Si prega di utilizzare l'ambiente produttivo con cautela

25、Modifica Response Body Gateway Filter Factory

La factory dei filtri può anche essere utilizzata per modificare il contenuto del corpo della risposta originale, e la factory dei filtri può essere configurata solo tramite codice, non nel file di configurazione. Esempio di codice:


Consigli: Questa fabbrica di filtri è in stato BETA, l'API potrebbe cambiare in futuro, per favore utilizzala con cautela nell'ambiente di produzione

26、Filtri predefiniti

I filtri predefiniti vengono usati per aggiungere una fabbrica di filtri a tutte le rotte, cioè per passareLa fabbrica di filtri configurata dal Filtro Predefinito si applicherà a tutte le rotte。 Esempio di configurazione:


(Fine)




Precedente:I log Docker riempiono i dischi e la migrazione dei dati
Prossimo:Le istruzioni SQL dinamiche di Java impediscono l'iniezione di database
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com