我們使用telnet機制向服務器發送http請求並獲得響應。 當使用telnet發送HTTP GET請求時,我們注意到了一件奇怪的事情。 第一種方法適用於大多數環境,但不適用於其中一種環境。但第二種方法(而不是相對路徑,使用完整路徑)在此環境中正常工作。使用telnet的HTTP請求沒有得到任何迴應
**
- 方法一:
**
(printf的「GET /test.jsp HTTP/1.0 \ nAccept:*/* \ n用戶代理: WatchDog \ n \ n「; sleep 9)| telnet xx.xx.xx.xx 8093 嘗試xx.xxx.xx.xx ... 連接到xx.xx.xx.xx. 轉義字符是'^]'。
由外國主機關閉的連接。
**
- 方法2:
**
(printf的「GET http://xx.xx.xx.xx:8093/test.jsp HTTP/1.0 \ nAccept:*/* \ n用戶代理:看門狗\ n \ n「;睡9)|遠程登錄XX.XX.XX.XX 8093
Trying xx.xx.xx.xx...
Connected to xx.xx.xx.xx.
Escape character is '^]'.
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=91643475E80038EA8770CE6803EE320C; Path=/
Content-Type: text/html;charset=UTF-8
Content-Language: zh-US
Content-Length: 42
Date: Mon, 03 Dec 2012 04:25:09 GMT
Connection: close
The Server is Running
Connection closed by foreign host.
爲什麼方法1是不是隻在一個環境中運行?我們需要在那個環境中檢查一些東西嗎?
請給你的建議...
感謝, Sekhar
「HTTP 1.1服務器可能會拒絕沒有主機集的HTTP請求,無論是在絕對請求URI還是在主機頭中 - >您能告訴我在哪些情況下會發生這種情況嗎?因爲我們發送HTTP請求到HTTP 1.1服務器與主機和使用相對路徑在大多數環境中工作正常。 – Sekhar
@Sekhar不,這是一個應該與您的Web服務器製造商一起檢查的實現細節。 RFC指出,服務器可能會嘗試使用試探法(例如,檢查某個特定主機所特有的URI路徑),以確定正在請求的確切資源是什麼。「_](http:// tools .ietf.org/HTML/RFC2616#部-5.2)。如果您只是修正了您的請求,即在標頭或URL中創建一個包含主機的有效HTTP請求,並使用'\ r \ n'分隔標頭,則它只適用於所有服務器。 – CodeCaster