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 काढण्याचा हा मार्ग नाही. गंतव्याची योजना योग्य ठेवा.
नमूद केलेल्या Jetty API मध्ये addProxy वापरा. getProxies बदल न करता येणारी यादी परत करते, म्हणून जुनी getProxies().add(...) पद्धत तिचा सध्याचा बदल करणारा इंटरफेस नाही.
अनुमत सार्वजनिक प्रॉक्सी मार्गावरील सार्वजनिक HTTP गंतव्यांसाठी, HTTP प्रॉक्सी यादी Jetty प्रॉक्सीच्या होस्ट आणि पोर्टसाठी उमेदवार पुरवते. कनेक्टरची तुलना करताना प्रत्यक्ष प्रॉक्सी प्रतिसाद वाचा. प्रमाणीकरण, गंतव्य धोरण आणि अनुपलब्ध गंतव्य हे फॉर्वर्ड केलेले HTTP की CONNECT निवडण्यापासून वेगळे राहतात.