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-ს შორის არჩევისგან.

დაკავშირებული სტატიები