Java 如何使用套接字处理来自浏览器的HTTPS get请求';输入流

Java 如何使用套接字处理来自浏览器的HTTPS get请求';输入流,java,sockets,https,get,Java,Sockets,Https,Get,我正在编写一个简单的HTTP代理服务器。我可以处理来自浏览器的HTTP GET请求。但是,我在处理HTTPS GET请求时遇到问题。 我有一个用于解析HTTP GET请求的解析器,我知道HTTP GET请求的样子: 获取/路径HTTP/1.1(\r\n) 标题(键:值)(\r\n) (\r\n\r\n) 但是我不知道HTTPS GET的样子,以及如何解析它。 当从浏览器触发HTTPS请求时,我的代理会收到奇怪的字符。我确信这是因为加密。但是,如何仅使用Java的Socket类来处理来自浏览器的

我正在编写一个简单的HTTP代理服务器。我可以处理来自浏览器的HTTP GET请求。但是,我在处理HTTPS GET请求时遇到问题。 我有一个用于解析HTTP GET请求的解析器,我知道HTTP GET请求的样子:

获取/路径HTTP/1.1(\r\n)

标题(键:值)(\r\n)

(\r\n\r\n)

但是我不知道HTTPS GET的样子,以及如何解析它。 当从浏览器触发HTTPS请求时,我的代理会收到奇怪的字符。我确信这是因为加密。但是,如何仅使用Java的Socket类来处理来自浏览器的安全请求呢

try ( BufferedReader inputStream = 
          new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      OutputStream outputStream = socket.getOutputStream(); ) { 
   ....
}

对于
HTTPS
连接,您所能做的就是转发接收到的数据。该数据是加密的,只有目标服务器才能解密


如果您也想阅读该请求,则需要使用底层协议
SSL
/
TLS
。此外,您还需要一个证书,除非由证书颁发机构签名并对请求的域有效,否则该证书将阻止浏览器显示内容,因为浏览器不信任该证书。

加密是在表示级别执行的,这比您操作的传输级别要高。所以我如何才能确定它是否是HTTPS,因为您知道如果inputStream是加密的,我无法解析它,我的意思是在转发之前,您应该知道它是简单套接字还是安全套接字。如果是后者,我应该从工厂创建安全套接字,并获取请求的服务器证书,但不解析inputStream如何获取请求的服务器的主机名,或者IP@Humoyun基于端口,HTTP流量使用端口
80
和HTTPS
443
。当然,:)这么简单的解决方案,我很遗憾,无论如何,我怎么想不出来,谢谢你