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 ਪ੍ਰੌਕਸੀ ਦੇ ਹੋਸਟ ਅਤੇ ਪੋਰਟ ਲਈ ਉਮੀਦਵਾਰ ਦਿੰਦੀ ਹੈ। ਕਨੈਕਟਰਾਂ ਦੀ ਤੁਲਨਾ ਕਰਦੇ ਸਮੇਂ ਅਸਲ ਪ੍ਰੌਕਸੀ ਜਵਾਬ ਪੜ੍ਹੋ। ਪ੍ਰਮਾਣਿਕਤਾ, ਟਾਰਗਿਟ ਨੀਤੀ ਅਤੇ ਉਪਲਬਧ ਨਾ ਹੋਣ ਵਾਲਾ ਟਾਰਗਿਟ ਫਾਰਵਰਡ HTTP ਜਾਂ CONNECT ਚੁਣਨ ਤੋਂ ਵੱਖ ਰਹਿੰਦੇ ਹਨ।

ਸੰਬੰਧਿਤ ਲੇਖ