我目前在本地计算机上运行Apache Tomcat。
当我尝试使用telnet:
telnet localhost 8080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET /beer/
我会得到类似的回复:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Beer Expert!</title>
<meta charset="utf-8">
</head>
<body>
等等等。
我的第一个问题是:所有HTTP响应标头在哪里,例如 HTTP / 1.1 200 OK 等?
当我按以下方式尝试我的telnet查询时:
telnet localhost 8080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET /beer/ HTTP/1.1
我会得到:
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Tue, 19 Jan 2016 12:15:23 GMT
Connection: close
0
Connection closed by foreign host.
为什么我现在看到HTTP响应标头?为什么我收到错误请求响应?
答案 0 :(得分:2)
只是说明GET /beer/
,你没有说明你想要的协议版本。我不确定tomcat默认是什么,但我的建议是陈述你喜欢的协议版本。
使用HTTP / 1.0,您应该使用更容易在telnet上键入的协议。一旦你转到HTTP / 1.0,你就会有更多的请求标题你可以发送 - 例如
GET /beer/ HTTP/1.0
Host: www.example.com
如果一台服务器上有许多不同的主机,将显示该虚拟主机的内容。
当我正在远程登录网络服务器时,我只使用HTTP / 1.0(超过1.1) - 很长一段时间以至于我不记得HTTP / 1.1是否很难或无法输入,或者是否是只是我开始这样做的例子。可能存在强制标题或信息,例如编码等,缺少并使你的请求不好。如果HTTP / 1.0足够你:用它运行。否则,请告诉我们您还需要什么。