当我尝试使用 HTTP 协议发出请求时,为什么会收到 Bad Request 响应?
Why am I getting a Bad Request response when I try my request with HTTP Protocol?
我的本地机器上目前有 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 响应 Headers 在哪里,例如 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 响应 headers?为什么我会收到 错误请求 响应?
仅仅说明 GET /beer/
你并没有说明你想要哪个协议版本。我不确定 tomcat 默认是什么,但我的建议是说明您喜欢的协议版本。
使用 HTTP/1.0,您应该使用更易于在 telnet 上键入的协议。只要您转到 HTTP/1.0,您就会有更多请求 headers 可以发送 - 例如
GET /beer/ HTTP/1.0
Host: www.example.com
将显示该虚拟主机的内容,以防您在一台服务器上有许多不同的主机。
当我远程登录到网络服务器时,我只使用 HTTP/1.0(超过 1.1)- 时间太长以至于我不记得 HTTP/1.1 是不是很难或不可能打字,或者这只是我开始打字时发现的例子。可能有强制性的 headers 或信息,例如编码等,丢失并使你的请求不好。如果 HTTP/1.0 对你来说足够了: 运行 就可以了。否则请告诉我们您还需要什么。
我的本地机器上目前有 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 响应 Headers 在哪里,例如 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 响应 headers?为什么我会收到 错误请求 响应?
仅仅说明 GET /beer/
你并没有说明你想要哪个协议版本。我不确定 tomcat 默认是什么,但我的建议是说明您喜欢的协议版本。
使用 HTTP/1.0,您应该使用更易于在 telnet 上键入的协议。只要您转到 HTTP/1.0,您就会有更多请求 headers 可以发送 - 例如
GET /beer/ HTTP/1.0
Host: www.example.com
将显示该虚拟主机的内容,以防您在一台服务器上有许多不同的主机。
当我远程登录到网络服务器时,我只使用 HTTP/1.0(超过 1.1)- 时间太长以至于我不记得 HTTP/1.1 是不是很难或不可能打字,或者这只是我开始打字时发现的例子。可能有强制性的 headers 或信息,例如编码等,丢失并使你的请求不好。如果 HTTP/1.0 对你来说足够了: 运行 就可以了。否则请告诉我们您还需要什么。