Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 9128|Respuesta: 0

[Fuente] Fábricas de filtros integradas en Spring Cloud Gateway

[Copiar enlace]
Publicado en 7/2/2022 13:36:49 | | |
Fábrica de filtros incorporados

Aquí tienes una tabla sencilla de todas las fábricas de filtros integradas en Spring Cloud Gateway, que no es muy detallada, pero puede usarse como una visión general rápida. Como sigue:

Fábrica de filtros
función
parámetro
AddRequestHeader
Añadir un encabezado a la solicitud original
Nombre y valor del encabezado
AddRequestParameter
Añadir parámetros de solicitud a la petición original
Nombre y valor del parámetro
AddResponseHeader
Añadir un encabezado a la respuesta original
Nombre y valor del encabezado
DedupeResponseHeader
Rechaza valores duplicados en la cabecera de respuesta
El nombre del encabezado y la estrategia de deduplicación que deben ser deduplicados
Hystrix
Introduce la protección de interruptores automáticos de Hystrix para la ruta
El nombre de HystrixCommand
Encabezados de Respaldo
Añadir información específica de excepción al encabezado de solicitud del fallbackUri
Nombre del encabezado
PrefijoPath
Añadir un prefijo a la ruta original de la solicitud
Camino de prefijo
PreserveHostHeader
Añade una propiedad preserveHostHeader=true a la solicitud, que el filtro de enrutamiento comprueba para decidir si quieres enviar al Host original
no
RequestRateLimiter
Utilizado para limitar solicitudes, el algoritmo de limitación es un bucket de tokens
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
RedirigirA
Redirige la solicitud original a la URL especificada
Código de estado HTTP y URL de redirección
RemoveHopByHopHeadersFilter
Eliminar una serie de encabezados prescritos por la organización IETF para la solicitud original
Esto está activado por defecto, y puedes especificar qué cabeceras eliminar solo desde la configuración
RemoveRequestHeader
Eliminar un encabezado para la solicitud original
Nombre de la cabecera
RemoveResponseHeader
Elimina un encabezado para la respuesta original
Nombre de la cabecera
RewritePath
Reescribe la ruta original de la solicitud
El regulador original del camino y el regex del camino reescrito
RewriteResponseHeader
Reescribe un encabezado en la respuesta original
Nombre de cabecera, expresión regular de valor, valor reescrito
SaveSession
Aplica la operación WebSession::save antes de reenviar la solicitud
no
Encabezados secur
Añadir una serie de encabezados de respuesta que actúan como seguridad a la respuesta original
Ninguno, puedes modificar los valores de estos encabezados de respuesta de seguridad
SetPath
Modificar la ruta original de la solicitud
Camino modificado
EncabezadoSetResponse
Modificar el valor de un encabezado en la respuesta original
Nombre de la cabecera, el valor modificado
SetStatus
Modificar el código de estado de la respuesta original
Códigos de estado HTTP, que pueden ser números o cadenas
StripPrefix
Usado para truncar la ruta de la solicitud original
Utiliza números para indicar el número de caminos a truncar
Reintentar
Intenta de nuevo para diferentes respuestas
retries、status、methods、series
RequestSize
Establezca el tamaño de los paquetes máximos solicitados que se pueden recibir. Si el tamaño del paquete de solicitud supera el valor establecido, se devuelve 413 Payload Too Large
El tamaño del paquete de solicitud está en bytes y el valor por defecto es 5M
ModificarCuerpoSolicitudModificar
Modifica el contenido original del cuerpo de la solicitud antes de reenviarla
El contenido modificado del cuerpo de la solicitud
ModificarRespuestaCuerpo
Modificar el contenido del cuerpo original de la respuesta
El contenido modificado del cuerpo de respuesta
Predeterminado
Añadir filtros para todas las rutas
Nombre y valor de la fábrica de filtros

Consejos: Cada fábrica de filtros corresponde a una clase de implementación, y estasEl nombre de la clase debe terminar en GatewayFilterFactoryEsta es una convención de Spring Cloud Gateway, por ejemplo, la clase de implementación correspondiente a AddRequestHeader es AddRequestHeaderGatewayFilterFactory. Los amigos interesados en el código fuente pueden empalmar nombres de clases específicos según esta regla para encontrar el código de implementación de estas fábricas de filtros integradas.

1、AddRequestHeader GatewayFilter Factory

Añadir un encabezado a la solicitud original, ejemplo de configuración:


Añade un encabezado de solicitud llamado X-Request-Foo con el valor de Bar a la solicitud original

2、AddRequestParameter GatewayFilter Factory

Añadir parámetros y valores de la solicitud original, ejemplo de configuración:


Añadir un parámetro llamado foo con valor de barra a la solicitud original, es decir: foo=bar

3、AddResponseHeader GatewayFilter Factory

Añadir un encabezado a la respuesta original, ejemplo de configuración:


Añade un encabezado de respuesta llamado X-Request-Foo con el valor de Bar a la respuesta original

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader puede eliminar valores duplicados en los encabezados de respuesta basándose en el nombre de cabecera configurado y la política de deduplicación, que es una función nueva proporcionada por Spring Cloud Greenwich SR2 y que no puede usarse bajo esta versión.

NosotrosSi el encabezado CORS (Solving Cross-Domain) se activa tanto en la pasarela como en el microservicio, si no se realiza ninguna configuración, entonces el valor del encabezado CORS se obtiene solicitando el microservicio -> de la puerta de entrada ->, será así:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Puedes ver que los valores de estos dos encabezados están duplicados; si quieres deduplicar los valores de estos dos encabezados, necesitas usar DedupeResponseHeader, ejemplo de configuración:

Estrategia de deduplicación:

  • RETAIN_FIRST: Default, conserva el primer valor
  • RETAIN_LAST: Conserva el último valor
  • RETAIN_UNIQUE: Mantener todos los valores únicos en el orden en que aparecieron por primera vez


Si quieres tener un entendimiento más completo de la fábrica de filtros, se recomienda leer el código fuente de la fábrica de filtros, porque el código fuente tiene notas y ejemplos detallados, lo cual es mejor que la documentación oficial: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Hystrix GatewayFilter Factory

Presentamos la protección de interruptores automáticos de Hystrix para rutas, ejemplo de configuración:


Hystrix es la primera generación de componentes tolerantes a fallos de Spring Cloud, pero ha entrado en modo mantenimiento, y Hystrix será eliminado por Spring Cloud en el futuro, siendo reemplazado por Alibaba Sentinel/Resilience4J. Así que este artículo no entrará en detalles; si te interesa, puedes consultar la documentación oficial: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

También soporta Hystrix, la fábrica de filtros descrita en la sección anterior soporta un parámetro de configuración: fallbackUri, que se utiliza para reenviar solicitudes a un URI específico cuando ocurre una excepción. La fábrica de filtros FallbackHeaders puede añadir un encabezado al reenviar una solicitud al URI, y el valor de este encabezado es la información específica de la excepción. Ejemplo de configuración:


No entraré en detalles aquí, si te interesa, puedes consultar la documentación oficial: FallbackHeaders GatewayFilter Factory

7、PrefiPath GatewayFilter Factory

Añadir una ruta prefijo a la ruta de solicitud original, ejemplo de configuración:


Esta configuración hace que la visita a ${GATEWAY_URL}/hello se reenvíe ahttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilter Factory

Añade una propiedad preserveHostHeader=true a la solicitud, que el filtro de enrutamiento comprueba para decidir si enviar el Host Header original. Ejemplo de configuración:


Si no está activado, entonces el encabezado llamado Host será controlado por el cliente Http

9、RequestRateLimiter GatewayFilter Factory

Se utiliza para limitar solicitudes, y el algoritmo de limitación es un bucket de tokens. Ejemplo de configuración:


10、Redirecto a GatewayFilter Factory

Redirige la solicitud original a la URL especificada, ejemplo de configuración:


Esta configuración hace que el acceso a ${GATEWAY_URL}/hello se redirija a https://acme.org/hello , y llevan unoLocation:http://acme.orgHeader, mientras que el código de estado HTTP que devuelve el cliente es 302

Notas:

El código de estado HTTP debería ser 3xx, por ejemplo, 301

La URL debe ser legítima que sirva como valor del encabezado de ubicación

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

Para la solicitud original de eliminar una serie de encabezados especificados por la organización IETF, los encabezados eliminados por defecto son los siguientes:


  • Conexión
  • Mantenerse con vida
  • Autentifique por proxy
  • Autorización por Procuración
  • TE
  • Remolque
  • Codificación de transferencia
  • Actualizar


Puedes especificar qué cabeceras solo se eliminan a través de la configuración, ejemplo de configuración:


12、RemoveRequestHeader GatewayFilter Factory

Para eliminar un encabezado para la solicitud original, configura un ejemplo:


Elimina el encabezado de solicitud llamado X-Request-Foo de la solicitud original

13、RemoveResponseHeader GatewayFilter Factory

Para eliminar un encabezado para la respuesta original, configura un ejemplo:


Elimina el encabezado de respuesta llamado X-Request-Foo de la respuesta original

14、RewritePath GatewayFilter Factory

Anulando la ruta original de la solicitud con una expresión regular, ejemplo de configuración:


Esta configuración permite acceder a /foo/bar para reescribir la ruta hacia /bar y reenviarla, es decir, reenviarla a https://example.org/bar。 Ten en cuenta que, debido a la sintaxis YAML, es necesario usar $\ en lugar de $

15、RewriteResponseHeader GatewayFilter Factory

Reescribe una cabecera en la respuesta original, ejemplo de configuración:


La importancia de esta configuración es que si el valor de X-Response-Foo en la cabecera de respuesta es /42?user=ford&password=omg!what&flag=true, entonces se reescribirá a /42?user=ford&password=***&flag=true según el valor configurado, es decir, la contraseña=omg!qué se reescribirá a contraseña=***

16、SaveSession GatewayFilter Factory

Antes de reenviar la solicitud, aplica la operación WebSession::save, ejemplo de configuración:


Se utiliza principalmente para almacenamiento diferido de datos (los datos no se persisten inmediatamente) como Spring Session, y busca asegurar que el estado de la sesión se guarde antes de que la solicitud sea reenviada. Si integras Spring Secutiry en Spring Session y quieres asegurarte de que toda la información de seguridad se transmita a las máquinas posteriores, necesitas configurar este filtro.

17、secureHeaders GatewayFilter Factory

La fábrica de filtros secureHeaders se basa principalmente en las recomendaciones de este blog, añadiendo una serie de encabezados de respuesta que desempeñan un papel de seguridad en la respuesta original. Por defecto, se añaden los siguientes encabezados (incluidos los valores):


  • 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


Si quieres modificar los valores de estos encabezados, necesitas usar los sufijos correspondientes de estos encabezados, de la siguiente manera:

  • Encabezado de protección XSS
  • seguridad estricta de transporte
  • Opciones de fotogramas
  • Opciones de tipo de contenido
  • Política de referencia
  • Política de seguridad de contenidos
  • Opciones de descarga
  • Políticas permitidas-cruz-de-dominio


Ejemplo de configuración:


Si quieres desactivar ciertos encabezados, puedes usar la siguiente configuración:

18、SetPath GatewayFilter Factory

Modifica la ruta original de la solicitud y configura un ejemplo:


Esta configuración lo redirige a ${GATEWAY_URL}/foo/bar cuando se accedehttps://example.org/bar , es decir, el /foo/bar original se cambió a /bar

19、SetResponseHeader GatewayFilter Factory

Modifica el valor de una cabecera en la respuesta original, configura un ejemplo:


Modificar el valor de X-Response-Foo en la respuesta original a Bar

20、SetStatus GatewayFilter Factory

Modifica el código de estado de la respuesta original, ejemplo de configuración:


El valor de SetStatusd puede ser un número o una cadena. Pero debe ser el valor en la clase de enumeración HttpStatus de primavera. Ambas configuraciones anteriores pueden devolver el código de estado HTTP 401.

21、Fábrica de Filtros GatewayStripPrefix

Para truncar la ruta de la solicitud original, ejemplo de configuración:


Como se muestra en la configuración anterior, si el camino solicitado es /name/bar/foo, entonces se truncará a /foo y se reenviará, es decir, 2 caminos se truncarán.

22、Retry GatewayFilter Factory

Reintenta para diferentes respuestas, por ejemplo, para códigos de estado HTTP, ejemplo de configuración:


Se pueden configurar los siguientes parámetros:

  • Intentos: El número de intentos
  • statuses: El código de estado que debe ser reprobado, establecido en org.springframework.http.HttpHttpStatus
  • métodos: El método de solicitud que necesita ser reprobado, con un valor en org.springframework.http.HttpHttpMethod
  • secuencia de código de estado series:HTTP, con un valor en org.springframework.http.Http.HttpStatus.Series


23、RequestSize GatewayFilter Factory

Establece el tamaño máximo de los paquetes de petición permitidos para recibirse, ejemplo de configuración:


Si el tamaño del paquete de solicitud supera el valor establecido, se devuelve una carga útil 413 demasiado grande junto con un mensaje de error

24、Modificar el cuerpo de la solicitud Gateway Factory Filter

Modifica el contenido original del cuerpo de la solicitud antes de reenviar la solicitud; la fábrica de filtros solo puede configurarse por código, no en el archivo de configuración. Ejemplo de código:


Consejos: Esta fábrica de filtros está en estado BETA, y la API podría cambiar en el futuro.Por favor, utiliza el entorno de producción con precaución

25、Modificar el cuerpo de respuesta Fábrica de Filtros de Gateway

La fábrica de filtros también puede usarse para modificar el contenido del cuerpo de respuesta original, y la fábrica de filtros solo puede configurarse por código, no en el archivo de configuración. Ejemplo de código:


Consejos: Esta fábrica de filtros está en estado BETA, la API puede cambiar en el futuro, por favor úsala con precaución en el entorno de producción

26、Filtros por defecto

Los filtros predeterminados se utilizan para añadir una fábrica de filtros a todas las rutas, es decir, para pasarLa fábrica de filtros configurada por el Filtro Predeterminado se aplicará a todas las rutas。 Ejemplo de configuración:


(Fin)




Anterior:Los registros de Docker llenan discos y la migración de datos
Próximo:Las sentencias SQL dinámicamente empalmadas en Java impiden la inyección de bases de datos
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com