Jetty સાથે Spring WebClient: CONNECT વિના સાદું HTTP પ્રોક્સી
જ્યારે સામાન્ય ફોરવર્ડ HTTP વિનંતી જરૂરી હોય ત્યારે Spring ના Jetty કનેક્ટરને મેળ ખાતા HTTP/1.1 ક્લાયન્ટ અને પ્રોક્સી પ્રોટોકોલ સાથે વાપરો.
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 પસંદગીથી અલગ રહે છે.