所以我试图在java中构建一个HTTPS服务器而不使用SocketChannels和SSLEngine。我的主要原因是当我使用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代码头(需要升级),服务器只需关闭连接并显示我随之发送的消息。
答案 0 :(得分:0)
答案很简单,localhost证书无论如何都无效,我为我的网站制作了证书并在外部进行了测试,并得到了正确的答复。据我所知,服务器无法请求客户端100%的时间更改协议。