Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小螺旋无极环_Java_Netty_Little Proxy - Fatal编程技术网

Java 小螺旋无极环

Java 小螺旋无极环,java,netty,little-proxy,Java,Netty,Little Proxy,我需要验证一些用户请求,所以我尝试使用LittleProxy。想法是让它对用户透明(iptables>littleproxy>originserver) 因此,我使用iptables将流重定向到LittleProxy(即收听127.0.0.1:3127),如下所示: iptables -t nat -A OUTPUT -p tcp -o eth0 --dport 80 -j DNAT --to 127.0.0.1:3127 @Override public HttpResponse clien

我需要验证一些用户请求,所以我尝试使用LittleProxy。想法是让它对用户透明(iptables>littleproxy>originserver)

因此,我使用iptables将流重定向到LittleProxy(即收听127.0.0.1:3127),如下所示:

iptables -t nat -A OUTPUT -p tcp -o eth0 --dport 80 -j DNAT --to 127.0.0.1:3127
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
   if (httpObject instanceof DefaultHttpRequest) {
      final DefaultHttpRequest request = (DefaultHttpRequest) httpObject;
      final String host = request.headers().get(HttpHeaders.Names.HOST);
      request.setUri("http://" + host + request.getUri());
   }
    return null;
}
如果我使用透明(true)的
启动它,我会收到一个错误400对URI的错误请求。这是由于RFC 7230合规性造成的

final HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
   .withPort(3127).withTransparent(true).start();
因此,我尝试按如下方式启动它,并更改请求URI:

final HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
   .withPort(3127).withTransparent(false)
   .withFiltersSource(new HttpFiltersSourceAdapterExt()).start();
并重写该方法,如下所示:

iptables -t nat -A OUTPUT -p tcp -o eth0 --dport 80 -j DNAT --to 127.0.0.1:3127
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
   if (httpObject instanceof DefaultHttpRequest) {
      final DefaultHttpRequest request = (DefaultHttpRequest) httpObject;
      final String host = request.headers().get(HttpHeaders.Names.HOST);
      request.setUri("http://" + host + request.getUri());
   }
    return null;
}
但是更改URI会导致一个无休止的循环变成LittleProxy。每次通过
标题添加新的

我还尝试使用
。withAllowRequestToOriginServer(true)
,但使用
。withTransparent(true)
也会导致无休止的循环

通过学习
directrequestest.java
我发现我可以测试头并检查它是否已经有了“Via”,但我不想中止请求。我仍然希望LittleProxy调用源服务器,检索并向用户提供响应


所以我的问题是,如何用LittleProxy实现这个场景?

我认为这是因为iptables规则。Littleproxy向目标端口80发出另一个请求。规则把它拿走,然后再次感应到littleproxy。你可能应该把它放在另一台机器上。

你找到这个了吗,鲍勃?我想你的问题类似于这个问题:你在哪里可以让它工作?不幸的是没有。