2016-01-19 51 views
0

我有当前在本地机器上运行的Apache Tomcat。当我使用HTTP协议尝试我的请求时,为什么会收到错误的请求响应?

当我尝试这样通过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确定等?

此外,当我尽我的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响应头?为什么我会收到错误请求的回应?

回答

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)时,当我telnet到一个web服务器 - 很长一段时间,我不记得HTTP/1.1是很难或不可能键入,或者如果它正是我开始这样做时发现的例子。可能有强制标题,或者例如信息。编码等,这是缺少的,使你的一个不好的要求。如果HTTP/1.0足够适合你:运行它。否则,让我们知道你还需要什么。

相关问题