11

我已经用谷歌搜索了 505 是“不支持 HTTP 版本”,但仍然无法弄清楚我的问题。我有一个带有 Tomcat 的 Web 应用程序,服务器端带有自签名证书以启用 HTTPS,而无需验证客户端。客户端将验证服务器证书。我已经分析了wireshark数据包,看来SSL握手是正确的。但是当我检查 Tomcat localhost_access_log 时,客户端请求会出现 505 错误,服务器端也没有收到客户端请求。你能帮忙给点提示吗?

172.25.21.113 - - [24/May/2012:16:28:26 +0800] "GET /updserver/update?action=signature_update&device_type=NGN&service_type=KAV&engine_ver=1.00&sig_ver=4.123&mac=0019CB72736E HTTP/1.1 " 505 -
4

2 回答 2

16

如果您在 HTTP 版本之后使用尾随空格向 Tomcat 发出请求(如您的示例中所示),则 Tomcat 将响应 505 错误。在 Tomcat 7.0.27 上确认。

RFC 2616 (HTTP 1.1) 说HTTP-Version"HTTP/" + digit + "." + digit. Request-Line 以 which 结尾," " + HTTP-Version + CRLF这意味着在最后一个数字之后不允许有空格。

参考:

于 2012-05-24T14:50:43.327 回答
6

显然不是 OP 的答案,但我今晚在尝试调试 SOLR 服务器时遇到了这个错误消息。

我的问题不是 HTTP 版本之后的额外空间。

我的客户端应用程序记录了错误的 URL,我愉快地将其复制并粘贴到到 SOLR tomcat 的 http 端口的 telnet 连接中。我的日志消息显示的 URL 没有正确 %20 编码 URL 中的空格。我收到了错误的 HTTP 版本错误,大概是因为它将 URL 中空格之后的所有内容解释为我的 HTTP 版本。

感谢http://java.dzone.com/news/solr-tomcat-and-http11-505的提示。

于 2015-06-21T02:49:28.667 回答