Spring WebClient کے ساتھ Jetty: CONNECT کے بغیر عام HTTP پراکسی
جب عام بھیجا گیا HTTP درخواست درکار ہو تو مطابق HTTP/1.1 کلائنٹ اور پراکسی پروٹوکول کے ساتھ Spring کا Jetty کنیکٹر استعمال کریں۔
Reactor Netty کا HTTP پراکسی ہینڈلر عام HTTP ہدف کے لیے بھی CONNECT سرنگ قائم کرتا ہے۔ اگر مطلوبہ پراکسی عام HTTP/1.1 بھیجنا قبول کرے تو Spring WebClient کوئی دوسرا معاون کنیکٹر استعمال کر سکتا ہے۔
Spring 6.2 کے ساتھ Jetty 12.0.35 کے کلائنٹ API اور موافق Jetty Reactive Streams انضمام کے لیے:
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 اور JettyClientHttpConnector Spring کی کلاسیں ہیں۔ فراہم کردہ Jetty کلائنٹ کا آغاز اور بندش اطلاق کے معمول کے زندگی دورانیے کے ذریعے سنبھالیں۔
جب ہدف اور کلائنٹ-پراکسی پروٹوکول مطابق ہوں تو Jetty کی HTTP/1.1 پراکسی بغیر سرنگ عام HTTP/1.1 درخواست بھیج سکتی ہے۔ اس کی requiresTunnel پالیسی محفوظ ہدف اور غیر موافق پروٹوکول راستوں کے لیے CONNECT استعمال کرتی ہے۔
یہ عام HTTPS سرنگ سے CONNECT ہٹانے کا طریقہ نہیں ہے۔ ہدف کا scheme درست رکھیں۔
بیان کردہ Jetty API میں addProxy استعمال کریں۔ getProxies ناقابلِ تبدیل فہرست واپس کرتا ہے، لہٰذا پرانا getProxies().add(...) نسخہ اس کا موجودہ تبدیلی انٹرفیس نہیں ہے۔
اجازت یافتہ عوامی پراکسی راستے پر عوامی HTTP ہدف کے لیے، HTTP پراکسی فہرست Jetty پراکسی کے host اور port کے لیے امیدوار فراہم کرتی ہے۔ کنیکٹر کا موازنہ کرتے وقت اصل پراکسی جواب پڑھیں۔ توثیق، ہدف پالیسی اور دستیاب نہ ہونے والا ہدف بھیجی گئی HTTP یا CONNECT کے انتخاب سے الگ رہتے ہیں۔