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 തിരഞ്ഞെടുക്കുന്നതിൽ നിന്ന് വേറിട്ടതാണ്.