Iebūvēta filtru rūpnīca
Šeit ir vienkārša tabula ar visām filtru rūpnīcām, kas iebūvētas Spring Cloud Gateway, kas nav ļoti detalizēta, bet to var izmantot kā ātru pārskatu. Šādi:
Filtru rūpnīca | funkcija | Parametru | AddRequestHeader | Galvenes pievienošana sākotnējam pieprasījumam | Galvenes nosaukums un vērtība | Pievienot Pieprasījuma parametru | Pieprasījuma parametru pievienošana sākotnējam pieprasījumam | Parametra nosaukums un vērtība | Pievienot atbildes galveni | Galvenes pievienošana sākotnējai atbildei | Galvenes nosaukums un vērtība | DedupeResponseHeader | Atbildes galvenē noraida vērtību dublikātus | Galvenes nosaukums un dublikātu novēršanas stratēģija, kas jānoņem | Hystrix | Iepazīstiniet ar Hystrix slēdža aizsardzību maršrutam | HystrixCommand nosaukums | Rezerves galvenes | Specifiskas izņēmuma informācijas pievienošana rezerves pieprasījuma galvenei | Galvenes nosaukums | Prefiksa ceļš | Prefiksa pievienošana sākotnējam pieprasījuma ceļam | Prefiksa ceļš | PreserveHostHeader | Pievienojiet pieprasījumam rekvizītu preserveHostHeader=true, ko maršrutēšanas filtrs pārbauda, lai izlemtu, vai vēlaties nosūtīt sākotnējo resursdatoru | ne | Pieprasījuma ātruma ierobežotājs | Tiek izmantots, lai ierobežotu pieprasījumus, droseļošanas algoritms ir žetonu spainis | keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus | Novirzīt uz | Sākotnējā pieprasījuma novirzīšana uz norādīto URL | HTTP statusa kods un novirzīšanas URL | RemoveHopByHopHeadersFilter | Noņemiet galveņu sēriju, ko IETF organizācija noteikusi sākotnējam pieprasījumam | Tas ir iespējots pēc noklusējuma, un jūs varat norādīt, kuras galvenes tikai dzēst, izmantojot konfigurāciju | RemoveRequestHeader | Sākotnējā pieprasījuma galvenes dzēšana | Galvenes nosaukums | RemoveResponseHeader | Sākotnējās atbildes galvenes noņemšana | Galvenes nosaukums | Pārrakstīšanas ceļš | Sākotnējā pieprasījuma ceļa pārrakstīšana | Sākotnējā ceļa regulārā izteiksme un pārrakstītā ceļa regulārā izteiksme | RewriteResponseHeader | Galvenes pārrakstīšana sākotnējā atbildē | Galvenes nosaukums, vērtības regulārā izteiksme, pārrakstītā vērtība | Saglabāt sesiju | Operācijas WebSession::save ieviešana pirms pieprasījuma pārsūtīšanas | ne | secureHeaders | Atbilžu galveņu sērijas pievienošana, kas darbojas kā drošība sākotnējai atbildei | Nav, varat modificēt šo drošības atbilžu galveņu vērtības | Iestatīt ceļu | Sākotnējā pieprasījuma ceļa modificēšana | Modificēts ceļš | SetResponseHeader | Galvenes vērtības modificēšana sākotnējā atbildē | Galvenes nosaukums, modificētā vērtība | Iestatīt statusu | Sākotnējās atbildes statusa koda modificēšana | HTTP statusa kodi, kas var būt skaitļi vai virknes | StripPrefix | Izmanto, lai saīsinātu sākotnējā pieprasījuma ceļu | Izmantojiet skaitļus, lai norādītu saīsināmo ceļu skaitu | Mēģināt vēlreiz | Mēģināt atkārtoti dažādām atbildēm | Retries、Statuses、Methods、Series | Pieprasījuma lielums | Iestatiet maksimālo pieprasīto pakešu lielumu, ko atļauts saņemt. Ja pieprasījuma pakotnes lielums pārsniedz iestatīto vērtību, tiek atgriezta 413 Lietderīgā slodze pārāk liela | Pieprasījuma pakotnes lielums ir baitos, un noklusējuma vērtība ir 5M | Modificēt pieprasījuma ķermeni | Sākotnējā pieprasījuma pamatteksta satura modificēšana pirms pieprasījuma pārsūtīšanas | Modificētais pieprasījuma pamatteksts | ModifyResponseBody | Sākotnējās atbildes pamatteksta satura modificēšana | Modificētais atbildes pamatteksta saturs | Noklusējuma | Filtru pievienošana visiem maršrutiem | Filtra rūpnīcas nosaukums un vērtība |
Padomi: Katra filtru rūpnīca atbilst ieviešanas klasei, un šieKlases nosaukumam jābeidzas ar GatewayFilterFactoryŠī ir Spring Cloud Gateway konvencija, piemēram, AddRequestHeader atbilstošā ieviešanas klase ir AddRequestHeaderGatewayFilterFactory. Draugi, kurus interesē avota kods, var savienot konkrētus klašu nosaukumus saskaņā ar šo noteikumu, lai atrastu šo iebūvēto filtru rūpnīcu ieviešanas kodu.
1 、 AddRequestHeader vārtejas filtru rūpnīca
Pievienojiet galveni sākotnējam pieprasījumam, konfigurācijas piemērs:
Pieprasījuma galvenes ar nosaukumu X-Request-Foo ar vērtību Bar pievienošana sākotnējam pieprasījumam
2 、 AddRequestParameter vārtejas filtru rūpnīca
Pievienojiet pieprasījuma parametrus un vērtības sākotnējam pieprasījumam, konfigurācijas piemērs:
Pievienojiet sākotnējam pieprasījumam parametru ar nosaukumu foo ar vērtību bar, t.i.: foo=bar
3 、 AddResponseHeader vārtejas filtru rūpnīca
Galvenes pievienošana sākotnējai atbildei, konfigurācijas piemērs:
Atbildes galvenes ar nosaukumu X-Request-Foo ar vērtību Bar pievienošana sākotnējai atbildei
4 、 DedupeResponseHeader vārtejas filtru rūpnīca
DedupeResponseHeader var noņemt vērtību dublikātus atbilžu galvenēs, pamatojoties uz konfigurēto galvenes nosaukumu un dublikātu novēršanas politiku, kas ir jauns līdzeklis, ko nodrošina Spring Cloud Greenwich SR2 un ko nevar izmantot šajā versijā.
MēsJa CORS (Solving Cross-Domain) galvene ir iestatīta gan vārtejā, gan mikropakalpojumā, ja konfigurācija netiek veikta, tad CORS galvenes vērtība, kas iegūta, pieprasot -> vārteju -> mikropakalpojumu, tas būs šādi:
Jūs varat redzēt, ka šo divu galveņu vērtības ir dublētas, ja vēlaties dedublēt šo divu galveņu vērtības, jums jāizmanto DedupeResponseHeader, konfigurācijas piemērs:
Dublēšanas stratēģija:
- RETAIN_FIRST: Noklusējums, saglabājiet pirmo vērtību
- RETAIN_LAST: Pēdējās vērtības saglabāšana
- RETAIN_UNIQUE: Saglabājiet visas unikālas vērtības tādā secībā, kādā tās parādījās pirmo reizi
Ja vēlaties iegūt visaptverošāku izpratni par filtru rūpnīcu, ieteicams izlasīt filtru rūpnīcas avota kodu, jo avota kodā ir detalizētas piezīmes un piemēri, kas ir labāki par oficiālo dokumentāciju: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory
5 、 Hystrix vārtejas filtru rūpnīca
Iepazīstinām ar Hystrix slēdža aizsardzību maršrutiem, konfigurācijas piemērs:
Hystrix ir pirmās paaudzes kļūdu izturīgie Spring Cloud komponenti, taču tas ir pārgājis apkopes režīmā, un Hystrix nākotnē tiks noņemts ar Spring Cloud, aizstājot ar Alibaba Sentinel/Resilience4J. Tātad šis raksts netiks detalizēti aplūkots, ja jūs interesē, varat atsaukties uz oficiālo dokumentāciju: Hystrix GatewayFilter Factory
6 、 FallbackHeaders vārtejas filtru rūpnīca
Atbalstot arī Hystrix, iepriekšējā sadaļā aprakstītā filtru rūpnīca atbalsta konfigurācijas parametru: fallbackUri, kas tiek izmantots, lai pārsūtītu pieprasījumus uz konkrētu URI, ja rodas izņēmums. FallbackHeaders filtru rūpnīca var pievienot galveni, pārsūtot pieprasījumu uz URI, un šīs galvenes vērtība ir konkrētā izņēmuma informācija. Konfigurācijas piemērs:
Es šeit neiedziļināšos, ja jūs interesē, varat atsaukties uz oficiālo dokumentāciju: FallbackHeaders GatewayFilter Factory
7 、 PrefixPath GatewayFilter rūpnīca
Pievienojiet prefiksa ceļu sākotnējam pieprasījuma ceļam, konfigurācijas piemērs:
Šī konfigurācija padara ${GATEWAY_URL}/hello apmeklējumu pārsūtītu uzhttps://example.org/mypath/hello
8 、 PreserveHostHeader vārtejas filtru rūpnīca
Pievienojiet pieprasījumam rekvizītu preserveHostHeader=true, ko maršrutēšanas filtrs pārbauda, lai izlemtu, vai sūtīt sākotnējo resursdatora galveni. Konfigurācijas piemērs:
Ja tas nav iestatīts, galveni ar nosaukumu Host kontrolēs Http klients
9 、 RequestRateLimiter vārtejas filtru rūpnīca
To izmanto, lai ierobežotu pieprasījumus, un droseļošanas algoritms ir žetonu spainis. Konfigurācijas piemērs:
10 、 RedirectTo GatewayFilter rūpnīca
Novirziet sākotnējo pieprasījumu uz norādīto URL, konfigurācijas piemērs:
Šī konfigurācija ļauj piekļūt ${GATEWAY_URL}/hello novirzīt uz https://acme.org/hello un nēsā vienuLocation:http://acme.orgGalvene, bet HTTP statusa kods, kas atgriež klientu, ir 302
Piezīmes:
HTTP statusa kodam jābūt 3xx, piemēram, 301
URL ir jābūt likumīgam URL, kas kalpo kā atrašanās vietas galvenes vērtība
11 、 RemoveHopByHopHeadersFilter GatewayFilter Factory
Sākotnējam pieprasījumam noņemt IETF organizācijas norādīto galveņu sēriju noklusējuma izdzēstās galvenes ir šādas:
- Sakars
- Saglabājiet dzīvu
- Starpniekservera autentifikācija
- Pilnvarojuma autorizācija
- TE
- Piekabe
- Pārsūtīšanas kodēšana
- Jaunināšanas
Varat norādīt, kuras galvenes tiek izdzēstas tikai konfigurācijas veidā, konfigurācijas piemērs:
12 、 RemoveRequestHeader GatewayFilter rūpnīca
Lai noņemtu sākotnējā pieprasījuma galveni, konfigurējiet piemēru:
Noņemiet pieprasījuma galveni ar nosaukumu X-Request-Foo no sākotnējā pieprasījuma
13 、 RemoveResponseHeader GatewayFilter rūpnīca
Lai noņemtu sākotnējās atbildes galveni, konfigurējiet piemēru:
Atbildes galvenes ar nosaukumu X-Request-Foo noņemšana no sākotnējās atbildes
14 、 RewritePath vārtejas filtru rūpnīca
Sākotnējā pieprasījuma ceļa ignorēšana ar regulāro izteiksmi, konfigurācijas piemērs:
Šī konfigurācija ļauj piekļūt /foo/bar, lai pārrakstītu ceļu uz /bar un pārsūtītu to, t.i., pārsūtītu uz https://example.org/bar。 Ņemiet vērā, ka YAML sintakses dēļ $ vietā ir jāizmanto $\
15 、 RewriteResponseHeader GatewayFilter rūpnīca
Pārrakstiet galveni sākotnējā atbildē, konfigurācijas piemērs:
Šīs konfigurācijas nozīme ir tāda, ka, ja X-Response-Foo vērtība atbildes galvenē ir /42?user=ford&password=omg!what&flag=true, tad tā tiks pārrakstīta uz /42?user=ford&password=****&flag=true atbilstoši konfigurētajai vērtībai, tas ir, password=omg!what tiks pārrakstīts uz paroli=***
16 、 SaveSession vārtejas filtru rūpnīca
Pirms pieprasījuma pārsūtīšanas izpildiet WebSession::save operāciju, konfigurācijas piemērs:
To galvenokārt izmanto atliktai datu glabāšanai (dati netiek saglabāti uzreiz), piemēram, pavasara sesijai, un vēlas nodrošināt, ka sesijas stāvoklis tiek saglabāts pirms pieprasījuma pārsūtīšanas. Ja integrējat pavasara secību pavasara sesijā un vēlaties nodrošināt, ka visa drošības informācija tiek pārsūtīta uz pakārtotām mašīnām, jums ir jākonfigurē šis filtrs.
17 、 drošas galvenes vārtejas filtru rūpnīca
SecureHeaders filtru rūpnīca galvenokārt balstās uz šajā emuārā sniegtajiem ieteikumiem, pievienojot virkni atbilžu galveņu, kurām sākotnējā atbildē ir drošības loma. Pēc noklusējuma tiek pievienotas šādas galvenes (ieskaitot vērtības):
- 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
Ja vēlaties modificēt šo galvenes vērtības, tad jums jāizmanto atbilstošie šo galvenes sufiksi šādi:
- xss-aizsardzība-galvene
- stingra transporta drošība
- rāmja opcijas
- satura tipa opcijas
- Ieteikuma politika
- satura drošības politika
- lejupielādes iespējas
- Atļautās starpdomēnu politikas
Konfigurācijas piemērs:
Ja vēlaties atspējot noteiktas galvenes, varat izmantot šādu konfigurāciju:
18 、 SetPath vārtejas filtra rūpnīca
Modificējiet sākotnējo pieprasījuma ceļu un konfigurējiet piemēru:
Šī konfigurācija padara to pārsūtītu uz ${GATEWAY_URL}/foo/bar, kad tam piekļūsthttps://example.org/bar , tas ir, oriģinālais /foo/bar tika mainīts uz /bar
19 、 SetResponseHeader GatewayFilter rūpnīca
Modificējiet galvenes vērtību sākotnējā atbildē, konfigurējiet piemēru:
Modificējiet X-Response-Foo vērtību sākotnējā atbildē uz Bar
20 、 SetStatus GatewayFilter rūpnīca
Modificējiet sākotnējās atbildes statusa kodu, konfigurācijas piemērs:
SetStatusd vērtība var būt skaitlis vai virkne. Bet tai jābūt vērtībai pavasara HttpStatus uzskaitījuma klasē. Abas iepriekš minētās konfigurācijas var atgriezt HTTP statusa kodu 401.
21 、 StripPrefix vārtejas filtra rūpnīca
Lai saīsinātu sākotnējā pieprasījuma ceļu, konfigurācijas piemērs:
Kā parādīts iepriekš minētajā konfigurācijā, ja pieprasītais ceļš ir /name/bar/foo, tad tas tiks saīsināts uz /foo un pārsūtīts, tas ir, 2 ceļi tiks saīsināti.
22 、 Atkārtoti mēģiniet GatewayFilter rūpnīcu
Mēģiniet atkārtoti saņemt dažādas atbildes, piemēram, HTTP statusa kodiem, konfigurācijas piemērs:
Var konfigurēt šādus parametrus:
- atkārtojumi: atkārtotu mēģinājumu skaits
- statuses: statusa kods, kas jāatkārto, iestatīts org.springframework.http.HttpStatus
- metodes: pieprasījuma metode, kas jāatjauno ar vērtību org.springframework.http.HttpMethod
- sērija:HTTP statusa koda secība ar vērtību org.springframework.http.HttpStatus.Series
23 、 RequestSize vārtejas filtru rūpnīca
Iestatiet maksimālo pieprasījumu pakešu lielumu, konfigurācijas piemērs:
Ja pieprasījuma pakotnes lielums pārsniedz iestatīto vērtību, tiek atgriezts 413 Payload Too Large kopā ar errorMessage
24 、 Modificēt pieprasījuma ķermeņa vārtejas filtru rūpnīcu
Pirms pieprasījuma pārsūtīšanas modificējiet sākotnējo pieprasījuma saturu, filtru rūpnīcu var konfigurēt tikai pēc koda, nevis konfigurācijas failā. Koda piemērs:
Padomi: Šī filtru rūpnīca ir BETA stāvoklī, un API nākotnē var mainīties.Lūdzu, izmantojiet ražošanas vidi piesardzīgi
25 、 Modificēt atbildes korpusa vārtejas filtru rūpnīcu
Filtru rūpnīcu var izmantot arī, lai modificētu sākotnējās atbildes pamatteksta saturu, un filtra rūpnīcu var konfigurēt tikai ar kodu, nevis konfigurācijas failā. Koda piemērs:
Padomi: Šī filtru rūpnīca ir BETA stāvoklī, API nākotnē var mainīties, lūdzu, izmantojiet to piesardzīgi ražošanas vidē
26 、 Noklusējuma filtri
Noklusējuma filtri tiek izmantoti, lai pievienotu filtru rūpnīcu visiem maršrutiem, tas ir, lai nodotuNoklusējuma filtra rūpnīcā konfigurētais filtrs tiks piemērots visiem maršrutiem。 Konfigurācijas piemērs:
(Beigas)
|