在一个简单的雄猫7 使用 HTTPS 安装,发送HTTPHTTPS 端口上的请求返回三个控制字符的奇怪响应:
$ wget -q -S -O - http://127.0.0.1:8443/
^U^C^@
[由于无法粘贴原文,我使用了插入符号-字符组合。]
如果可能的话,我想将其更改为重定向到 https 或返回 404 或其他一些自定义行为。这可能吗?
答案1
虽然可能,但通常不希望在 HTTPS 专用端口上发送 HTTP。实际上,生产是在 80 和 443 端口上运行的,因此除非有人“黑客入侵”,否则这实际上不是问题。如果使用不同的端口(例如默认的 Tomcat),那么问题可能只是因为人们忘记在 URL 前面输入“https”而出现。
在任何情况下,标准行为都是返回HTTP 400 Bad Request
。例如,Apache Web 服务器就是这样做的。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
</p>
</body></html>
Tomcat TLS/SSL HTTP 连接器显然不会这样做,我怀疑它会回复一些 TLS 握手错误消息(此处部分讨论)https://stackoverflow.com/questions/7164944/unexpected-results-when-attempting-to-access-tomcat-6-https-connector-using-http)。
在生产中,SSL 通常在反向代理服务器(如 Apache)上终止,该服务器甚至可以优雅地处理这样的错误请求(如上所述)。