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 ఎంపికకు వేరుగా ఉంటాయి.