Spring WebClient-ը Jetty-ի հետ. սովորական HTTP փոխանցում առանց CONNECT-ի
Օգտագործեք Spring-ի Jetty միակցիչը համապատասխան HTTP/1.1 հաճախորդի և փոխանցիչի արձանագրություններով, երբ պահանջվում է սովորական փոխանցված HTTP հարցում։
Reactor Netty-ի HTTP փոխանցիչի մշակիչը CONNECT թունել է ստեղծում նույնիսկ սովորական HTTP նպատակակետի համար։ Եթե նախատեսված փոխանցիչը փոխարենը ընդունում է սովորական 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-ը հեռացնելու միջոց չէ։ Պահեք նպատակակետի սխեման ճիշտ։
Օգտագործեք addProxy-ն նշված Jetty API-ում։ getProxies-ը վերադարձնում է անփոփոխելի ցանկ, ուստի հին getProxies().add(...) բաղադրատոմսը նրա ընթացիկ փոփոխման միջերեսը չէ։
Թույլատրված հանրային փոխանցիչի երթուղու հանրային HTTP նպատակակետերի համար HTTP փոխանցիչների ցանկը առաջարկում է թեկնածուներ Jetty-ի փոխանցիչի հոսթի և պորտի համար։ Միակցիչները համեմատելիս կարդացեք փոխանցիչի իրական պատասխանը։ Նույնականացումը, նպատակակետի քաղաքականությունը և անհասանելի նպատակակետը մնում են առանձին փոխանցված HTTP-ի և CONNECT-ի ընտրությունից։