2

我已经使用 jetty 9 和以下 servlet 代码成功创建了一个透明代理:

public class ProxyRewriteServlet extends ProxyServlet.Transparent {
   private static final String HOST = "192.168.1.20" // 'hidden' server
   private static final int PORT = 28000 // the port the server is listening to

   @Override
   protected URI rewriteURI(HttpServletRequest request) {
       URIBuilder builder = new URIBuilder()
        .setScheme("http").setHost(HOST).setPort(PORT)
        .setPath(request.getRequestURI());

      return builder.build();
   }

代理转发到需要基本身份验证的知名服务器 (192.168.1.20)。使用该地址直接访问服务器是http://admin:password@192.168.1.20/path可行的。通过代理访问http://admin:password@proxy.from.above/path也可以。

但是,由于身份验证,访问 overhttp://proxy.from.above/path不起作用。因此,我补充rewriteURI()以下内容:

builder.setUserInfo("admin", "password"); 

不幸的是,这没有任何效果,服务器会要求浏览器输入凭据。

是否有适当的方法在代理处注入用户信息?还是他们必须来自客户?

4

0 回答 0