Reactor Netty’ning HTTP proksi ishlovchisi oddiy HTTP manzili uchun ham CONNECT tunnelini o‘rnatadi. Agar mo‘ljallangan proksi oddiy HTTP/1.1 yo‘naltirishni qabul qilsa, Spring WebClient boshqa qo‘llab-quvvatlanadigan ulagichdan foydalanishi mumkin.

Spring 6.2 uchun Jetty 12.0.35 mijoz API’si va mos keluvchi Jetty Reactive Streams integratsiyasi bilan:

var jetty = new org.eclipse.jetty.client.HttpClient(
    new org.eclipse.jetty.client.transport.HttpClientTransportOverHTTP());
jetty.getProxyConfiguration().addProxy(
    new org.eclipse.jetty.client.HttpProxy("proxy.example", 8080));

var client = WebClient.builder()
    .clientConnector(new JettyClientHttpConnector(jetty))
    .build();

WebClient va JettyClientHttpConnector Spring sinflaridir. Taqdim etilgan Jetty mijozi ishga tushishi va to‘xtashini ilovaning odatdagi hayot sikli orqali boshqaring.

Manzil va mijoz-proksi protokollari mos kelganda Jetty’ning HTTP/1.1 proksisi oddiy HTTP/1.1 so‘rovini tunnelsiz yo‘naltira oladi. Uning requiresTunnel siyosati xavfsiz manzillar va mos kelmaydigan protokol yo‘llari uchun CONNECT ishlatadi.

Bu oddiy HTTPS tunnelidan CONNECTni olib tashlash usuli emas. Manzil scheme’ini to‘g‘ri saqlang.

Ko‘rsatilgan Jetty API’da addProxy ishlating. getProxies o‘zgartirib bo‘lmaydigan ro‘yxat qaytaradi, shuning uchun eski getProxies().add(...) usuli uning hozirgi o‘zgartirish interfeysi emas.

Ruxsat etilgan ommaviy proksi yo‘lida ommaviy HTTP manzillari uchun HTTP proksilar ro‘yxati Jetty proksisining host va porti uchun nomzodlar beradi. Ulagichlarni solishtirganda haqiqiy proksi javobini o‘qing. Autentifikatsiya, manzil siyosati va mavjud bo‘lmagan manzil yo‘naltirilgan HTTP yoki CONNECT tanlovidan alohida qoladi.

O'xshash maqolalar