Javaソケットを使用してプロキシサーバー(FwdおよびReverse)を作成しました。
これは、ブラウザで設定された8080の着信要求をリッスンし、それらを別のプロキシサーバーに転送します2。
そして、server2から送信された応答を読み取り、ブラウザに書き込みます。
その間、コードはリクエストとレスポンスをログに記録し、ブラウザからの特定の事前定義されたリクエストタイプもブロックします。
今、私はJettyを使用してこれを行い、HTTPSリクエストもサポートしたいと思います。
たとえば検索しましたが、見つかりませんでした。
これにより、ブラウザのプロキシ設定でプロキシポートとして設定した8080でサーバーが起動します。
import org.eclipse.jetty.server.Server;
import Handler.HelloHandler;
public class StartJetty
{
public static void main(String[] args) throws Exception
{
Server server = new Server(8080);
server.setHandler(new HelloHandler());
server.start();
server.join();
}
}
これは、要求をリッスンしてブラウザーに応答を書き戻すために使用するハンドラーです。
package Handler;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
public class HelloHandler extends AbstractHandler
{
final String _greeting;
final String _body;
public HelloHandler()
{
_greeting="Hello World";
_body=null;
}
public HelloHandler(String greeting)
{
_greeting=greeting;
_body=null;
}
public HelloHandler(String greeting,String body)
{
_greeting=greeting;
_body=body;
}
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<h1>"+_greeting+"</h1>");
if (_body!=null)
response.getWriter().println(_body);
}
}
応答が得られたら、それをプロキシサーバーに転送し、その応答を待ってブラウザに書き戻します。それについて助けが必要です。