Filtrlar

All lectures for UZ purposes
Daraja, Dars
Mavjud

Brauzerlar faqat GET yoki POST HTTP usullari orqali forma ma'lumotlarini yuborishi mumkin, lekin brauzerga tegishli bo'lmagan klientlar PUT, PATCH va DELETE HTTP usullaridan foydalanishi mumkin. Servlet API ServletRequest.getParameter*() metodlari faqat POST HTTP usuli uchun forma maydonlariga kirishni qo'llab-quvvatlashi kerakligini talab qiladi.

spring-web moduli PUT, PATCH va DELETE HTTP-metodlari uchun FormContentFilter ni ta'minlaydi, bu application/x-www-form-urlencoded turidagi tarkibdan so'rovlarni tuta oladi, so'rov tanasidan forma ma'lumotlarini o'qiydi va ServletRequest ni o'rab, bu forma ma'lumotlariga ServletRequest.getParameter*() metodlar oilasi orqali kirishni ta'minlaydi.

Yuborilgan sarlavhalar

So'rov yuklash serverlari (masalan, yukni taqsimlovchi serverlar) orqali o'tayotgan paytda, host, port va shema o'zgarishi mumkin va bu klient nuqtayi nazaridan to'g'ri host, port va shemani ko'rsatadigan havolalar yaratishni qiyinlashtiradi.

RFC 7239 spesifikatsiyasi Forwarded HTTP-sarlavhasini belgilaydi, bu esa proksi-serverlar tomonidan asl so'rov haqida ma'lumot taqdim etish uchun ishlatilishi mumkin. Boshqa noaniq sarlavhalar ham mavjud, jumladan X-Forwarded-Host, X-Forwarded-Port, X-Forwarded-Proto, X-Forwarded-Ssl va X-Forwarded-Prefix.

ForwardedHeaderFilter — bu servis filtirlari sarlavhalar asosida host, port va shemani o'zgartirish va bu sarlavhalarni keyingi ta'sirdan chiqarib tashlash uchun so'rovni o'zgartiradi. Filtr so'rovni o'rab turgani uchun u RequestContextFilter kabi boshqa filtrlar oldida tartiblanishi kerak, ular o'zgartirilgan so'rov bilan ishlashi zarur.

Yuborilgan sarlavhalar uchun ehtiyot choralar mavjud, chunki ilova sarlavhalar proksi-server tomonidan qo'shilganmi yoki zararli klient tomonidanmi, buni bilish qiyin. Shuning uchun ishonchli hudud bo'ylab proksi-server tashqaridan kelgan ishonchsiz Forwarded sarlavhalarni olib tashlash uchun sozlanishi kerak. ForwardedHeaderFilterni removeOnly=true parametri bilan sozlash mumkin, bu holatida u sarlavhalarni olib tashlaydi, lekin ularni ishlatmaydi.

Asinxron so'rovlar va xato joylashtirishni qo'llab-quvvatlash uchun ushbu filtr DispatcherType.ASYNC va DispatcherType.ERROR bilan moslashtirilishi kerak. Agar AbstractAnnotationConfigDispatcherServletInitializer Spring Framework dan foydalansangiz, barcha filtrlar avtomatik tarzda har qanday joylashtirish turlariga ro'yxatdan o'tkaziladi. Ammo, web.xml yoki Spring Boot orqali FilterRegistrationBean orqali filtrni ro'yxatdan o'tkazishda, DispatcherType.ASYNC va DispatcherType.ERROR ni DispatcherType.REQUEST ga qo'shimcha ravishda faollashtirish shart.

Sirt ETag

ShallowEtagHeaderFilter sirt ETag yaratadi, natijada javobga yozilgan tarkibni keshlash va undan MD5-xashni hisoblashi bilan. Keyingi klient so'rovini yuborish paytida filtr xuddi shunday qiladi, lekin hisoblangan qiymatni If-None-Match so'rov sarlavhasi bilan solishtiradi va agar ular teng bo'lsa, 304 (NOT_MODIFIED) qaytaradi.

Ushbu strategiya tarmoq o'tkazish imkoniyatini tejaydi, lekin protsessor resurslarini emas, chunki har bir so'rov uchun to'liq javob hisoblanishi kerak. Oldin aytilgan boshqa strategiyalar kontroller darajasida hisob-kitoblardan qochishga imkon beradi.

Ushbu filtr writeWeakETag parametriga ega bo'lib, filtrni moslashtiradi, ya'ni quyidagilarga o'xshash noaniq ETag yozish uchun: W/"02a2d595e6ed9a0b24f027f2b63b134d6" (bu RFC 7232, 2.3 bo'limda belgilangan).

Asinxron so'rovlarni qo'llab-quvvatlash uchun ushbu filtr DispatcherType.ASYNC bilan moslashtirilishi kerak, shunda filtr oxirgi asinxron jo'natish tugaguncha ETagni hosil qilishni yakunlay oladi. Agar AbstractAnnotationConfigDispatcherServletInitializerni Spring Framework dan foydalansangiz, barcha filtrlar avtomatik tarzda har qanday jo'natish turlariga ro'yxatdan o'tkaziladi. Biroq, agar siz web.xml yoki Spring Boot orqali FilterRegistrationBean orqali filtrni ro'yxatdan o'tkazsangiz, DispatcherType.ASYNC ni ham o'z ichiga olgan holda yozing.

CORS

Spring MVC kontrollerlar uchun annotatsiyalar yordamida CORS konfiguratsiyasini nozik qo'llab-quvvatlaydi. Biroq, agar Spring Security bilan foydalansangiz, Spring Security filtrlar zanjiridan oldinga joylashtirilishi kerak bo'lgan ichki CorsFilter fo

Ko'proq ma'lumot olish uchun CORS va CORS filtrlash boblariga qarang.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION