Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 9128|Odpowiedź: 0

[Źródło] Fabryki filtrów wbudowane w Spring Cloud Gateway

[Skopiuj link]
Opublikowano 07.02.2022 13:36:49 | | |
Fabryka wbudowanych filtrów

Oto prosta tabela wszystkich fabryk filtrów wbudowanych w Spring Cloud Gateway, która nie jest zbyt szczegółowa, ale może służyć jako szybki przegląd. Następujący sposób:

Fabryka filtrów
funkcja
parametr
AddRequestHeader
Dodaj nagłówek do oryginalnego żądania
Nazwa i wartość nagłówka
AddRequestParameter
Dodaj parametry żądania do oryginalnego żądania
Nazwa i wartość parametru
AddResponseHeader
Dodaj nagłówek do oryginalnej odpowiedzi
Nazwa i wartość nagłówka
DedupeResponseHeader
Odrzuca zduplikowane wartości w nagłówku odpowiedzi
Nazwa nagłówka i strategia deduplikacji, które trzeba zdeduplikować
Hystrix
Wprowadź ochronę przed wyłącznikiem obwodowym Hystrix na trasę
Nazwa HystrixCommand
Nagłówki rezerwowe
Dodaj konkretne informacje o wyjątkach do nagłówka żądania DropbackUri
Nazwa nagłówka
PrefiksPath
Dodaj prefiks do oryginalnej ścieżki żądania
Ścieżka prefiksowa
PreserveHostHeader
Dodaj do żądania właściwość preserveHostHeader=true, którą filtr routingu sprawdza, aby zdecydować, czy chcesz wysłać oryginalnego Hosta
nie
RequestRateLimiter
Algorytm ograniczania zamówień służy do ograniczania żądań jako kubełek tokenów
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
RedirectTo
Przekieruj oryginalne żądanie na wskazany adres URL
Kod statusu HTTP i adres URL przekierowania
Usuń filtr nagłówków HopBy Hop
Usuń serię nagłówków zalecanych przez organizację IETF dla oryginalnego żądania
Jest to domyślnie włączone i możesz określić, które nagłówki mają usuwać przez konfigurację
RemoveRequestHeader
Usuń nagłówek oryginalnego żądania
Nazwa nagłówka
RemoveResponseHeader
Usuń nagłówek oryginalnej odpowiedzi
Nazwa nagłówka
RewritePath
Przepisz oryginalną ścieżkę żądania
Oryginalny regex ścieżki i regex przekształconej ścieżki
RewriteResponseHeader
Przepisz nagłówek w oryginalnej odpowiedzi
Nazwa nagłówka, regularne wyrażenie wartości, przekształcona wartość
SaveSession
Wymusz operację WebSession::save przed przekazaniem żądania
nie
secureHeaders
Dodaj serię nagłówków odpowiedzi, które działają jako zabezpieczenie do oryginalnej odpowiedzi
Żadnych, możesz modyfikować wartości tych nagłówków bezpieczeństwa
SetPath
Zmodyfikuj oryginalną ścieżkę żądania
Zmodyfikowana ścieżka
SetResponseHeader
Zmodyfikuj wartość nagłówka w oryginalnej odpowiedzi
Nazwa nagłówka, zmodyfikowana wartość
SetStatus
Zmodyfikuj kod statusu oryginalnej odpowiedzi
Kody statusu HTTP, które mogą być liczbami lub ciągami znaków
StripPrefiks
Użyte do skracania ścieżki oryginalnego żądania
Użyj liczb, aby wskazać liczbę ścieżek do obcięcia
Ponów próbę
Spróbuj ponownie, aby uzyskać inne odpowiedzi
retries、statuses、methods、series
RequestSize
Ustaw rozmiar maksymalnej liczby żądanych pakietów, które mogą być odbierane. Jeśli rozmiar pakietu żądania przekroczy ustaloną wartość, zwracane jest 413 Payload Too Large
Rozmiar pakietu żądań jest wyrażony w bajtach, a domyślna wartość to 5M
ModifyRequestBody
Zmodyfikuj oryginalną treść treści żądania przed przekazaniem żądania
Zmodyfikowana treść zapytania
ModifyResponseBody
Modyfikacja zawartości oryginalnej części odpowiedzi
Zmodyfikowana zawartość ciała odpowiedzi
Domyślny
Dodaj filtry dla wszystkich tras
Nazwa i wartość fabryki filtrów

Wskazówki: Każda fabryka filtrów odpowiada klasie implementacyjnej, a teNazwa klasy musi kończyć się na GatewayFilterFactoryJest to konwencja Spring Cloud Gateway, na przykład klasa implementacyjna odpowiadająca AddRequestHeader to AddRequestHeaderGatewayFilterFactory. Znajomi zainteresowani kodem źródłowym mogą połączyć nazwy klas zgodnie z tą regułą, aby znaleźć kod implementacyjny tych wbudowanych fabryk filtrów.

1、AddRequestHeader GatewayFilter Factory

Dodaj nagłówek do oryginalnego żądania, przykład konfiguracji:


Dodaj nagłówek żądania o nazwie X-Request-Foo z wartością Bar do oryginalnego żądania

2、AddRequestParameter GatewayFilter Factory

Dodaj parametry i wartości żądań do oryginalnego żądania, przykład konfiguracji:


Dodaj parametr o nazwie foo z wartością bar do oryginalnego żądania, tzn.: foo=bar

3、AddResponseHeader GatewayFilter Factory

Dodaj nagłówek do oryginalnej odpowiedzi, przykład konfiguracji:


Dodaj nagłówek odpowiedzi o nazwie X-Request-Foo z wartością Bar do oryginalnej odpowiedzi

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader może usuwać zduplikowane wartości w nagłówkach odpowiedzi na podstawie skonfigurowanej nazwy nagłówka i polityki deduplikacji, co jest nową funkcją oferowaną przez Spring Cloud Greenwich SR2 i nie może być używana w tej wersji.

MyJeśli nagłówek CORS (Solving Cross-Domain) jest ustawiony zarówno na bramce, jak i mikroserwisie, jeśli nie dokonano żadnej konfiguracji, to wartość nagłówka CORS uzyskana jest przez żądanie -> bramki -> mikroserwisu, będzie wyglądać tak:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Widać, że wartości tych dwóch nagłówków są zduplikowane, jeśli chcesz zdeduplikować wartości tych dwóch nagłówków, musisz użyć DedupeResponseHeader, przykład konfiguracji:

Strategia deduplikacji:

  • RETAIN_FIRST: Domyślnie, zachowaj pierwszą wartość
  • RETAIN_LAST: Zachowaj ostatnią wartość
  • RETAIN_UNIQUE: Zachowaj wszystkie unikalne wartości w kolejności, w jaką pojawiły się po raz pierwszy


Jeśli chcesz lepiej zrozumieć fabrykę filtrów, zaleca się przeczytanie kodu źródłowego fabryki filtrów, ponieważ kod źródłowy zawiera szczegółowe notatki i przykłady, co jest lepsze niż oficjalna dokumentacja: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Fabryka filtrów bram Hystrix

Przedstawiamy ochronę wyłączników obwodowych Hystrix dla tras, przykład konfiguracji:


Hystrix to pierwsza generacja odpornych na awarie komponentów Spring Cloud, ale weszła w tryb konserwacji, a Hystrix zostanie usunięta przez Spring Cloud w przyszłości, zastąpiona przez Alibaba Sentinel/Resilience4J. Ten artykuł nie będzie wchodził w szczegóły, jeśli jesteś zainteresowany, możesz sięgnąć do oficjalnej dokumentacji: Hystrix GatewayFilter Factory

6、FallbackHeaders GatewayFilter Factory

Wspierając również Hystrix, fabryka filtrów opisana w poprzedniej sekcji obsługuje parametr konfiguracyjny: fallbackUri, który służy do przekazywania żądań do określonego URI w przypadku wystąpienia wyjątku. Fabryka filtrów FallbackHeaders może dodać nagłówek podczas przekazywania żądania do URI, a wartość tego nagłówka to konkretna informacja o wyjątku. Przykład konfiguracji:


Nie będę tu wchodził w szczegóły, jeśli jesteś zainteresowany, możesz zajrzeć do oficjalnej dokumentacji: FallbackHeaders GatewayFilter Factory

7、PrefiksPath GatewayFilter Factory

Dodaj ścieżkę prefiksu do oryginalnej ścieżki żądania, przykład konfiguracji:


Ta konfiguracja sprawia, że wizyta do ${GATEWAY_URL}/hello jest przekazywana dohttps://example.org/mypath/hello

8、PreserveHostHeader GatewayFilterFactory

Dodaj do żądania właściwość preserveHostHeader=true, którą filtr routingu sprawdza, aby zdecydować, czy wysłać oryginalny nagłówek Hosta. Przykład konfiguracji:


Jeśli nie jest ustawione, to nagłówek o nazwie Host będzie kontrolowany przez klienta Http

9、RequestRateLimiter GatewayFilter Factory

Służy do ograniczania żądań, a algorytm ograniczania to "bucket" (wiadrok tokenów). Przykład konfiguracji:


10、RedirectTo GatewayFilter Factory

Przekieruj oryginalne żądanie na określony adres URL, przykład konfiguracji:


Ta konfiguracja przekierowuje dostęp do ${GATEWAY_URL}/hello na https://acme.org/hello , i przenieść jedenLocation:http://acme.orgNagłówek, podczas gdy kod statusu HTTP zwracający klienta to 302

Notatki:

Kod statusu HTTP powinien brzmieć 3xx, np. 301

URL musi być legalnym URL, który służy jako wartość nagłówka lokalizacji

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

Dla oryginalnego żądania usunięcia serii nagłówków określonych przez organizację IETF, domyślne usunięte nagłówki są następujące:


  • Połączenie
  • Keep-Alive
  • Uwierzytelnianie pośrednie
  • Autoryzacja pełnomocnictwa
  • TE
  • Przyczepa
  • Kodowanie transferowe
  • Upgrade


Możesz określić, które nagłówki są usuwane tylko przez konfigurację, przykład konfiguracji:


12、RemoveRequestHeader GatewayFilter Factory

Aby usunąć nagłówek oryginalnego żądania, skonfiguruj przykład:


Usuń nagłówek żądania o nazwie X-Request-Foo z oryginalnego żądania

13、RemoveResponseHeader GatewayFilter Factory

Aby usunąć nagłówek oryginalnej odpowiedzi, skonfiguruj przykład:


Usuń nagłówek odpowiedzi o nazwie X-Request-Foo z oryginalnej odpowiedzi

14、RewritePath GatewayFilter Factory

Nadpisywanie oryginalnej ścieżki żądania wyrażeniem regularnym, przykład konfiguracji:


Ta konfiguracja pozwala na dostęp do /foo/bar na przepisanie ścieżki do /bar i jej przekazanie, czyli przekazywanie do https://example.org/bar。 Należy zauważyć, że ze względu na składnię YAML zamiast $ należy używać $\

15、RewriteResponseHeader GatewayFilter Factory

Przekształc nagłówek w oryginalnej odpowiedzi, przykład konfiguracji:


Znaczenie tej konfiguracji polega na tym, że jeśli wartość X-Response-Foo w nagłówku odpowiedzi to /42?user=ford&password=omg!what&flag=true, zostanie przepisana na /42?user=ford&password=***&flag=true zgodnie z ustawioną wartością, czyli hasłem=omg!co zostanie przepisane na password=***

16、SaveSession GatewayFilter Factory

Przed przekazaniem żądania wymusz operację WebSession::save, przykład konfiguracji:


Jest głównie używany do przechowywania danych z opóźnieniem (dane nie są od razu utrwalane), podobnie jak Spring Session, i ma zapewnić, że stan sesji zostanie zapisany przed przekazaniem żądania. Jeśli integrujesz Spring Secutiry z Spring Session i chcesz mieć pewność, że wszystkie informacje o bezpieczeństwie będą przesyłane do kolejnych maszyn, musisz skonfigurować ten filtr.

17、secureHeaders GatewayFilter Factory

Fabryka filtrów secureHeaders opiera się głównie na zaleceniach z tego bloga, dodając serię nagłówków odpowiedzi, które odgrywają rolę bezpieczeństwa w oryginalnej odpowiedzi. Domyślnie dodane są następujące nagłówki (w tym wartości):


  • 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


Jeśli chcesz zmodyfikować wartości tych nagłówków, musisz użyć odpowiadających im sufiksów, w następujący sposób:

  • XSS-protection-header
  • ścisłe bezpieczeństwo transportu
  • Opcje ramek
  • Opcje typu treści
  • Polityka referrer-policy
  • Polityka bezpieczeństwa-treści
  • opcje pobrania
  • Polityki dozwolone między dziedzinami


Przykład konfiguracji:


Jeśli chcesz wyłączyć niektóre nagłówki, możesz użyć następującej konfiguracji:

18、SetPath GatewayFilter Factory

Zmodyfikuj oryginalną ścieżkę żądania i skonfiguruj przykład:


Ta konfiguracja sprawia, że podczas dostępu jest przesyłany do ${GATEWAY_URL}/foo/barhttps://example.org/bar , czyli oryginalne /foo/bar zostało zmienione na /bar

19、SetResponseHeader GatewayFilter Factory

Zmodyfikuj wartość nagłówka w oryginalnej odpowiedzi, konfiguruj przykład:


Zmodyfikuj wartość X-Response-Foo w oryginalnej odpowiedzi na Bar

20、SetStatus GatewayFilter Factory

Zmodyfikuj kod statusu oryginalnej odpowiedzi, przykład konfiguracji:


Wartość SetStatusd może być zarówno liczbą, jak i ciągiem znaków. Ale musi to być wartość w klasie enumeracji Spring HttpStatus. Obie powyższe konfiguracje mogą zwracać kod statusu HTTP 401.

21、Fabryka Filtrów GatewayFilter z prefiksem

Dla skracania ścieżki oryginalnego żądania, przykład konfiguracji:


Jak pokazano w powyższej konfiguracji, jeśli żądana ścieżka to /name/bar/foo, zostanie ona obcięta do /foo i przekierowana, czyli 2 ścieżki zostaną obcięte.

22、Ponownie GatewayFilter Factory

Spróbuj ponownie dla różnych odpowiedzi, np. dla kodów statusowych HTTP, przykład konfiguracji:


Można skonfigurować następujące parametry:

  • powtórki: Liczba prób
  • statuses: Kod statusu, który trzeba powtórzyć, ustawiony w org.springframework.http.HttpHttpStatus
  • methods: Metoda żądania, którą trzeba powtórzyć, z wartością org.springframework.http.HttpHttpMethod
  • series:sekwencja kodu statusowego HTTP z wartością w org.springframework.http.HttpHttpStatus.Series


23、RequestSize GatewayFilter Factory

Ustaw rozmiar maksymalnej dozwolonej do odebrania pakietów żądań, przykład konfiguracji:


Jeśli rozmiar pakietu żądań przekroczy ustaloną wartość, zwracany jest ładunek 413 Payload Too Large wraz z komunikatem o błędzie

24、Modify Request Body GatewayFilter Factory

Zmodyfikuj oryginalną treść ciała żądania przed przekazaniem żądania, fabryczny filtr może być skonfigurowany tylko przez kod, a nie w pliku konfiguracyjnym. Przykład kodu:


Wskazówki: Ta fabryka filtrów jest w stanie BETA, a API może się zmienić w przyszłości.Prosimy o ostrożne korzystanie z środowiska produkcyjnego

25、Fabryka filtrów filtrów Gate Body Modify Response

Fabryka filtrów może być również używana do modyfikacji zawartości oryginalnego korpusu odpowiedzi, a fabryka filtrów może być konfigurowana wyłącznie przez kod, a nie w pliku konfiguracyjnym. Przykład kodu:


Wskazówki: Ta fabryka filtrów jest w stanie BETA, API może się zmienić w przyszłości, prosimy o ostrożne korzystanie z niego w środowisku produkcyjnym

26、Domyślne filtry

Domyślne filtry służą do dodania fabryki filtrów do wszystkich tras, czyli do przekazywaniaFabryka filtrów skonfigurowana przez Domyślny Filtr będzie miała zastosowanie do wszystkich tras。 Przykład konfiguracji:


(Koniec)




Poprzedni:Logi docker wypełniają dyski i migrację danych
Następny:Dynamicznie splicowane polecenia SQL w Javie zapobiegają wstrzykiwaniu bazy danych
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com