【发布时间】:2025-11-25 00:30:01
【问题描述】:
我开发了一个 Java servlet,它可以代理来自浏览器的 HTTP 请求。
我在代理 HTTPS 请求时遇到问题。
servlet 似乎没有从浏览器接收任何 HTTPS 请求。
在进一步调查后,我注意到 HTTP 请求似乎以简单的 GET 请求开始,而 HTTPS 请求以 CONNECT 请求开始,如下面的日志摘录所示:
"CONNECT ajax.googleapis.com:443 HTTP/1.1" 200
我的问题是,是否可以使用我的 servlet 处理此请求?
public class MyProxyServlet extends HttpServlet {
@Override
public void init(final ServletConfig config) throws ServletException {
super.init(config);
}
@Override
protected void doGet(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
}
@Override
protected void doPost(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
}
}
如果是,在哪里以及如何?
【问题讨论】:
-
您想代理指向不同域的 HTTPS 请求?
-
@home 是的,被代理的请求是任意域
-
我不是这个主题的专家,但我猜你需要实现一个“真正的”基于 TCP/IP 的代理。您不能只代理 HTTP 级别的 HTTPS 请求 - 它会绕过整个 SSL 信任链...