littleProxy で、リモート IP とポートを設定するにはどうすればよいですか? 彼らのウェブサイトのサンプル:
HttpProxyServer server =
DefaultHttpProxyServer.bootstrap()
.withPort(8080)
.start();
ローカル ポートのみを設定します。
littleProxy で、リモート IP とポートを設定するにはどうすればよいですか? 彼らのウェブサイトのサンプル:
HttpProxyServer server =
DefaultHttpProxyServer.bootstrap()
.withPort(8080)
.start();
ローカル ポートのみを設定します。
要求のターゲットは、RFC 7230 のセクション 5.3.2 で指定されているように、絶対形式である必要があり、LittleProxy によって転送されます。次のコードは、LittleProxy v1.1.0beta1 で機能します。
Pattern REQUEST_TARGET_ORIGIN_FORM_PREFIX = Pattern.compile("/[^/]");
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
if (httpObject instanceof HttpRequest) {
HttpRequest httpRequest = (HttpRequest) httpObject;
if (REQUEST_TARGET_ORIGIN_FORM_PREFIX.matcher(httpRequest.getUri()).lookingAt()) {
String uriRemote = "http://myRemoteHost:myRemotePort" + httpRequest.getUri();
httpRequest.setUri(uriRemote);
}
}
return null;
}
リモート IP とポートは、LittleProxy に送信されるリクエストの「ホスト」フィールドから取得されます。
例: 以下のヘッダーを持つリクエスト:
POST http://x.x.x.x:1234 HTTP/1.1
Authorization: Basic cjknkcjenkjljvbt==
Host: x.x.x.x:1234
Accept: */*
Proxy-Connection: Keep-Alive
User-Agent: MyNode/test
Content-Type: text/xml
Content-Length: 1079
Expect: 100-continue
LittleProxy によってリモート ホスト xxxx、ポート 1234 に転送されます。これを知った上で、要求がプロキシ経由で正しいリモート ホスト/ポートに確実に送られるようにする 1 つの方法は、クライアント アプリケーションによって送信される要求を変更することです。
または、LittleProxy フィルタを使用してリクエスト ヘッダーを編集します。目的のリモート IP/ポートに変更します
HttpProxyServer server =
DefaultHttpProxyServer.bootstrap()
.withPort(8080)
.withFiltersSource(new HttpFiltersSourceAdapter() {
public HttpFilters filterRequest(HttpRequest originalRequest, ChannelHandlerContext ctx) {
return new HttpFiltersAdapter(originalRequest) {
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
// Modify header, replace remote IP/Port
return null;
}
@Override
public HttpResponse proxyToServerRequest(HttpObject httpObject) {
// TODO: implement your filtering here
return null;
}
@Override
public HttpObject serverToProxyResponse(HttpObject httpObject) {
// TODO: implement your filtering here
return httpObject;
}
@Override
public HttpObject proxyToClientResponse(HttpObject httpObject) {
// TODO: implement your filtering here
return httpObject;
}
};
}
})
.start();
最初のアプローチ(クライアントからのリクエストの変更)で成功しました