我使用jetty 9成功创建了一个透明代理,其代码如下:
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
的访问也可以。
但是,由于身份验证,访问http://proxy.from.above/path
不起作用。因此,我使用以下内容补充rewriteURI()
:
builder.setUserInfo("admin", "password");
不幸的是,这没有任何效果,服务器要求浏览器输入凭据。
是否有正确的方法在代理注入用户信息?或者他们是否一定需要来自客户?