HTTPS协议服务器请求升级Java socketchannels
HTTPS protocol server request upgrade Java socketchannels
所以我试图在 java 中构建一个 HTTPS 服务器,而不使用 SocketChannels 和 SSLEngine。我的主要原因是当我使用 com.sun 打包构建并测试它时,很多请求超时,如果他们确实响应,他们需要大约 2 分钟(在调试器处理程序中甚至需要 2 分钟才能被调用)我构建了一个HTTP 服务器并请求降低到 200 毫秒,但我需要 HTTPS,当我添加 SSLEngine 并解包请求时,它看起来像正常的 header 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 代码 header(需要升级),服务器只会关闭连接并显示我发送的消息。
答案很简单,localhost 证书无论如何都无效,我为我的网站制作了一个证书并进行了外部测试,并且能够得到正确的响应。据我所知,服务器不能 100% 地请求客户端更改协议。
所以我试图在 java 中构建一个 HTTPS 服务器,而不使用 SocketChannels 和 SSLEngine。我的主要原因是当我使用 com.sun 打包构建并测试它时,很多请求超时,如果他们确实响应,他们需要大约 2 分钟(在调试器处理程序中甚至需要 2 分钟才能被调用)我构建了一个HTTP 服务器并请求降低到 200 毫秒,但我需要 HTTPS,当我添加 SSLEngine 并解包请求时,它看起来像正常的 header 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 代码 header(需要升级),服务器只会关闭连接并显示我发送的消息。
答案很简单,localhost 证书无论如何都无效,我为我的网站制作了一个证书并进行了外部测试,并且能够得到正确的响应。据我所知,服务器不能 100% 地请求客户端更改协议。