2016-01-19 50 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足夠適合你:運行它。否則,讓我們知道你還需要什麼。

相關問題