所以我试图在不使用 SocketChannels 和 SSLEngine 的情况下在 java 中构建一个 HTTPS 服务器。我的主要原因是当我使用 com.sun 包装构建并对其进行测试时,很多请求超时,如果他们确实响应,他们大约需要 2 分钟(在调试器处理程序中甚至需要 2 分钟才能被调用)我构建了一个 HTTP 服务器并且请求下降到 200 毫秒,但我需要 HTTPS,当我添加 SSLEngine 并打开请求时,它看起来像 HTTP 的普通标头,请求看起来像这样:
GET / HTTP/1.1
Host: localhost
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
DNT: 1
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
基于此,该请求似乎未使用 HTTPS(Chrome 也表示网站不安全)并且未请求升级。我如何告诉客户升级?我读过的所有页面都说客户端应该请求升级,如果我尝试发送 426 代码标头(需要升级),服务器只会关闭连接并显示我发送的消息。