Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 9128|Jawab: 0

[Sumber] Pabrik filter yang dibangun ke Spring Cloud Gateway

[Salin tautan]
Diposting pada 07/02/2022 13.36.49 | | |
Pabrik filter bawaan

Berikut adalah tabel sederhana dari semua pabrik filter yang dibangun ke dalam Spring Cloud Gateway, yang tidak terlalu detail, tetapi dapat digunakan sebagai ikhtisar cepat. Sebagai berikut:

Pabrik filter
fungsi
Parameter
AddRequestHeader
Menambahkan Header ke permintaan asli
Nama dan nilai header
AddRequestParameter
Menambahkan parameter permintaan ke permintaan asli
Nama dan nilai parameter
AddResponseHeader
Menambahkan header ke respons asli
Nama dan nilai header
DedupeResponseHeader
Menolak nilai duplikat dalam header respons
Nama header dan strategi deduplikasi yang perlu dideduplikasi
Hystrix
Perkenalkan perlindungan pemutus sirkuit Hystrix untuk rute tersebut
Nama HystrixCommand
Header Fallback
Tambahkan informasi pengecualian spesifik ke header permintaan fallbackUri
Nama header
PrefixPath
Menambahkan awalan ke jalur permintaan asli
Jalur awalan
PreserveHostHeader
Tambahkan properti preserveHostHeader=true ke permintaan, yang diperiksa oleh filter perutean untuk memutuskan apakah Anda ingin mengirim Host asli
tidak
RequestRateLimiter
Digunakan untuk membatasi permintaan, algoritma pembatasan adalah bucket token
keyResolver、rateLimiter、statusCode、denyEmptyKey、emptyKeyStatus
Pengalihan ke
Mengalihkan permintaan asli ke URL yang ditentukan
Kode status HTTP dan URL pengalihan
RemoveHopByHopHeadersFilter
Hapus serangkaian header yang ditentukan oleh organisasi IETF untuk permintaan asli
Ini diaktifkan secara default, dan Anda dapat menentukan header mana yang hanya akan dihapus melalui konfigurasi
RemoveRequestHeader
Menghapus header untuk permintaan asli
Nama header
RemoveResponseHeader
Menghapus header untuk respons asli
Nama header
Jalur Tulis Ulang
Tulis ulang jalur permintaan asli
Regex jalur asli dan regex jalur yang ditulis ulang
RewriteResponseHeader
Menulis ulang header dalam respons asli
Nama header, ekspresi nilai reguler, nilai yang ditulis ulang
Simpan Sesi
Terapkan operasi WebSession::save sebelum meneruskan permintaan
tidak
secureHeaders
Tambahkan serangkaian header respons yang bertindak sebagai keamanan ke respons asli
Tidak ada, Anda dapat memodifikasi nilai header respons keamanan ini
SetPath
Mengubah jalur permintaan asli
Jalur yang dimodifikasi
SetResponseHeader
Mengubah nilai header dalam respons asli
Nama header, nilai yang dimodifikasi
SetStatus
Mengubah kode status respons asli
Kode status HTTP, yang dapat berupa angka atau string
Awalan Strip
Digunakan untuk memotong jalur permintaan asli
Gunakan angka untuk menunjukkan jumlah jalur yang akan dipotong
Pengulangan
Coba lagi untuk respons yang berbeda
percobaan ulang、status、metode、seri
Ukuran Permintaan
Atur ukuran paket maksimum yang diminta yang diizinkan untuk diterima. Jika ukuran paket permintaan melebihi nilai yang ditetapkan, 413 Payload Too Large akan dikembalikan
Ukuran paket permintaan dalam byte dan nilai defaultnya adalah 5 juta
ModifyRequestBody
Ubah konten isi permintaan asli sebelum meneruskan permintaan
Konten isi permintaan yang dimodifikasi
ModifyResponseBody
Memodifikasi konten isi respons asli
Konten isi respons yang dimodifikasi
Default
Menambahkan filter untuk semua rute
Memfilter nama dan nilai pabrik

Tips: Setiap pabrik filter sesuai dengan kelas implementasi, dan iniNama kelas harus diakhiri dengan GatewayFilterFactoryIni adalah konvensi Spring Cloud Gateway, misalnya, kelas implementasi yang sesuai dengan AddRequestHeader adalah AddRequestHeaderGatewayFilterFactory. Teman yang tertarik dengan kode sumber dapat menyambungkan nama kelas tertentu sesuai dengan aturan ini untuk menemukan kode implementasi pabrik filter bawaan ini.

1、AddRequestHeader GatewayFilter Factory

Tambahkan header ke permintaan asli, contoh konfigurasi:


Menambahkan header permintaan bernama X-Request-Foo dengan nilai Bar ke permintaan asli

2、AddRequestParameter GatewayFilter Factory

Tambahkan parameter dan nilai permintaan ke permintaan asli, contoh konfigurasi:


Tambahkan parameter bernama foo dengan nilai bar ke permintaan asli, yaitu: foo=bar

3 、 Pabrik Filter GatewayHeader AddResponseHeader

Tambahkan header ke respons asli, contoh konfigurasi:


Tambahkan header respons bernama X-Request-Foo dengan nilai Bar ke respons asli

4、DedupeResponseHeader GatewayFilter Factory

DedupeResponseHeader dapat menghapus nilai duplikat dalam header respons berdasarkan nama header yang dikonfigurasi dan kebijakan deduplikasi, yang merupakan fitur baru yang disediakan oleh Spring Cloud Greenwich SR2 dan tidak dapat digunakan di bawah versi ini.

KamiJika Header CORS (Memecahkan Lintas Domain) diatur pada Gateway dan layanan mikro, jika tidak ada konfigurasi yang dibuat, maka nilai Header CORS diperoleh dengan meminta layanan mikro -> Gateway ->, akan seperti ini:


Access-Control-Allow-Credentials: true, true
Access-Control-Allow-Origin: https://musk.mars, https://musk.mars
Anda dapat melihat bahwa nilai kedua Header ini diduplikasi, jika Anda ingin mendeduplikasi nilai kedua Header ini, Anda perlu menggunakan DedupeResponseHeader, contoh konfigurasi:

Strategi Deduplikasi:

  • RETAIN_FIRST: Default, pertahankan nilai pertama
  • RETAIN_LAST: Pertahankan nilai terakhir
  • RETAIN_UNIQUE: Simpan semua nilai unik dalam urutan kemunculannya pertama kali


Jika Anda ingin memiliki pemahaman yang lebih komprehensif tentang pabrik filter, disarankan untuk membaca kode sumber pabrik filter, karena kode sumber memiliki catatan dan contoh terperinci, yang lebih baik daripada dokumentasi resmi: org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory

5、Pabrik Filter Gateway Hystrix

Memperkenalkan perlindungan pemutus sirkuit Hystrix untuk rute, contoh konfigurasi:


Hystrix adalah generasi pertama komponen Spring Cloud yang toleran terhadap kesalahan, tetapi telah memasuki mode pemeliharaan, dan Hystrix akan dihapus oleh Spring Cloud di masa mendatang, digantikan oleh Alibaba Sentinel/Resilience4J. Jadi artikel ini tidak akan membahas secara detail, jika Anda tertarik, Anda dapat merujuk ke dokumentasi resmi: Hystrix GatewayFilter Factory

6 、 FallbackHeaders GatewayFilter Factory

Juga mendukung Hystrix, pabrik filter yang dijelaskan di bagian sebelumnya mendukung parameter konfigurasi: fallbackUri, yang digunakan untuk meneruskan permintaan ke URI tertentu saat pengecualian terjadi. Pabrik filter FallbackHeaders dapat menambahkan header saat meneruskan permintaan ke URI, dan nilai header ini adalah informasi pengecualian tertentu. Contoh konfigurasi:


Saya tidak akan membahas secara rinci di sini, jika Anda tertarik, Anda dapat merujuk ke dokumentasi resmi: FallbackHeaders GatewayFilter Factory

7、Pabrik Filter GatewayGateway PrefixPath

Tambahkan jalur awalan ke jalur permintaan asli, contoh konfigurasi:


Konfigurasi ini membuat kunjungan ke ${GATEWAY_URL}/hello diteruskan kehttps://example.org/mypath/hello

8 、 PreserveHostHeader GatewayFilter Factory

Tambahkan properti preserveHostHeader=true ke permintaan, yang diperiksa oleh filter perutean untuk memutuskan apakah akan mengirim Header Host asli. Contoh konfigurasi:


Jika tidak diatur, maka header bernama Host akan dikendalikan oleh Klien Http

9、RequestRateLimiter GatewayFilter Factory

Ini digunakan untuk membatasi permintaan, dan algoritma pembatasan adalah bucket token. Contoh konfigurasi:


10、Pengalihan ke Pabrik GatewayFilter

Mengalihkan permintaan asli ke URL yang ditentukan, contoh konfigurasi:


Konfigurasi ini membuat akses ke ${GATEWAY_URL}/hello dialihkan ke https://acme.org/hello , dan membawa satuLocation:http://acme.orgHeader, sedangkan kode status HTTP yang mengembalikan klien adalah 302

Catatan:

Kode status HTTP harus 3xx, misalnya 301

URL harus berupa URL yang sah yang berfungsi sebagai nilai Header Lokasi

11、RemoveHopByHopHeadersFilter GatewayFilter Factory

Untuk permintaan asli untuk menghapus serangkaian header yang ditentukan oleh organisasi IETF, header default yang dihapus adalah sebagai berikut:


  • Sambungan
  • Tetap Hidup
  • Proksi-Autentikasi
  • Otorisasi Proksi
  • TE
  • Trailer
  • Pengkodean Transfer
  • Upgrade


Anda dapat menentukan header mana yang hanya dihapus melalui konfigurasi, contoh konfigurasi:


12、RemoveRequestHeader GatewayFilter Factory

Untuk menghapus header untuk permintaan asli, konfigurasikan contoh:


Hapus header permintaan bernama X-Request-Foo dari permintaan asli

13、RemoveResponseHeader GatewayFilter Factory

Untuk menghapus header respons asli, konfigurasikan contoh:


Hapus header respons bernama X-Request-Foo dari respons asli

14、Pabrik Filter Gateway Tulis Ulang Jalur

Mengganti jalur permintaan asli dengan ekspresi reguler, contoh konfigurasi:


Konfigurasi ini memungkinkan akses ke /foo/bar untuk menulis ulang jalur ke /bar dan meneruskannya, yaitu diteruskan ke https://example.org/bar。 Perhatikan bahwa karena sintaks YAML, $\ perlu digunakan alih-alih $

15、RewriteResponseHeaderGatewayFilter Factory

Tulis ulang header dalam respons asli, contoh konfigurasi:


Signifikansi dari konfigurasi ini adalah jika nilai X-Response-Foo dalam header respons adalah /42?user=ford&password=omg!what&flag=true, maka itu akan ditulis ulang menjadi /42?user=ford&password=***&flag=true sesuai dengan nilai yang dikonfigurasi, yaitu password=omg!what akan ditulis ulang ke password=***

16、SaveSession GatewayFilter Factory

Sebelum meneruskan permintaan, terapkan operasi WebSession::save, contoh konfigurasi:


Ini terutama digunakan untuk penyimpanan data yang ditangguhkan (data tidak segera dipertahankan) seperti Sesi Musim Semi, dan ingin memastikan bahwa status sesi disimpan sebelum permintaan diteruskan. Jika Anda mengintegrasikan Spring Secutiry ke dalam Spring Session dan ingin memastikan bahwa semua informasi keamanan dikirimkan ke mesin hilir, Anda perlu mengonfigurasi filter ini.

17、secureHeaders GatewayFilter Factory

Pabrik filter secureHeaders terutama didasarkan pada rekomendasi di blog ini, menambahkan serangkaian header respons yang memainkan peran keamanan dalam respons asli. Secara default, Header berikut (termasuk nilai) ditambahkan:


  • 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


Jika Anda ingin memodifikasi nilai Header ini, maka Anda perlu menggunakan akhiran yang sesuai dari Header ini, sebagai berikut:

  • header-perlindungan xss
  • keamanan transportasi yang ketat
  • opsi bingkai
  • opsi-jenis-konten
  • kebijakan perujuk
  • kebijakan keamanan konten
  • opsi unduhan
  • kebijakan lintas-domain yang diizinkan


Contoh konfigurasi:


Jika Anda ingin menonaktifkan header tertentu, Anda dapat menggunakan konfigurasi berikut:

18、Pabrik SetPath GatewayFilter

Ubah jalur permintaan asli dan konfigurasikan contoh:


Konfigurasi ini membuatnya diteruskan ke ${GATEWAY_URL}/foo/bar saat diakseshttps://example.org/bar , yaitu, /foo/bar asli diubah menjadi /bar

19、SetResponseHeader GatewayFilter Factory

Ubah nilai header dalam respons asli, konfigurasikan contoh:


Mengubah nilai X-Response-Foo dalam respons asli ke Bar

20、Pabrik SetStatus GatewayFilter

Ubah kode status respons asli, contoh konfigurasi:


Nilai SetStatusd dapat berupa angka atau string. Tetapi itu harus berupa nilai dalam kelas pencacahan Spring HttpStatus. Kedua konfigurasi di atas dapat mengembalikan kode status HTTP 401.

21、StripPrefix GatewayFilter Pabrik

Untuk memotong jalur permintaan asli, contoh konfigurasi:


Seperti yang ditunjukkan pada konfigurasi di atas, jika jalur yang diminta adalah /name/bar/foo, maka akan dipotong ke /foo dan diteruskan, yaitu 2 jalur akan dipotong.

22、Coba Kembali Pabrik GatewayFilter

Coba lagi untuk respons yang berbeda, misalnya untuk kode status HTTP, contoh konfigurasi:


Parameter berikut dapat dikonfigurasi:

  • percobaan ulang: Jumlah percobaan ulang
  • statuses: Kode status yang perlu dicoba ulang, diatur di org.springframework.http.HttpStatus
  • methods: Metode permintaan yang perlu dicoba ulang, dengan nilai di org.springframework.http.HttpHttpMethod
  • series:HTTP urutan kode status, dengan nilai di org.springframework.http.HttpStatus.Series


23、Pabrik FilterGateway Ukuran Permintaan

Atur ukuran paket permintaan maksimum yang diizinkan untuk diterima, contoh konfigurasi:


Jika ukuran paket permintaan melebihi nilai yang ditetapkan, 413 Payload Terlalu Besar akan ditampilkan bersama dengan errorMessage

24、Modifikasi Permintaan Pabrik Filter Gateway Tubuh

Ubah konten isi permintaan asli sebelum meneruskan permintaan, pabrik filter hanya dapat dikonfigurasi berdasarkan kode, bukan dalam file konfigurasi. Contoh kode:


Tips: Pabrik filter ini dalam status BETA, dan API dapat berubah di masa mendatang.Harap gunakan lingkungan produksi dengan hati-hati

25、Modifikasi Pabrik Filter Gateway Tubuh Respons

Pabrik filter juga dapat digunakan untuk memodifikasi konten isi respons asli, dan pabrik filter hanya dapat dikonfigurasi dengan kode, bukan dalam file konfigurasi. Contoh kode:


Tips: Pabrik filter ini dalam status BETA, API dapat berubah di masa mendatang, harap gunakan dengan hati-hati di lingkungan produksi

26、Filter Default

Filter Default digunakan untuk menambahkan pabrik filter ke semua rute, yaitu, untuk lulusPabrik filter yang dikonfigurasi oleh Filter Default akan berlaku untuk semua rute。 Contoh konfigurasi:


(Akhir)




Mantan:Log Docker mengisi disk dan migrasi data
Depan:Pernyataan SQL yang disambung secara dinamis Java mencegah injeksi database
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com