如何使用Socket的输入流处理来自浏览器的HTTPS get请求

时间:2015-10-16 14:04:09

标签: java sockets https get

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

  

GET / Path 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(); ) { 
   ....
}

1 个答案:

答案 0 :(得分:2)

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

如果您也想阅读这些请求,则需要说SSL / TLS,这是基础协议。此外,您需要一个证书,除非由证书颁发机构签名且对请求的域有效,否则将阻止浏览器显示内容,因为他们不信任证书。