当我尝试使用HTTP协议时,为什么会收到错误的请求响应?

时间:2016-01-19 12:19:11

标签: http tomcat telnet

我目前在本地计算机上运行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响应标头?为什么我收到错误请求响应?

1 个答案:

答案 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足够你:用它运行。否则,请告诉我们您还需要什么。