使用 telnet 的 HTTP 请求没有得到任何响应

Posted

技术标签:

【中文标题】使用 telnet 的 HTTP 请求没有得到任何响应【英文标题】:HTTP request using telnet not getting any response 【发布时间】:2012-11-21 20:01:39 【问题描述】:

我们使用 telnet 机制向服务器发送 http 请求并获得响应。 在使用 telnet 发送 HTTP GET 请求时,我们注意到了一件奇怪的事情。 第一种方法适用于大多数环境,但不适用于其中一个环境。但是第二种方法(而不是相对路径,使用完整路径)在这种环境下工作正常。

**

方法一:

**

(printf "GET /test.jsp HTTP/1.0\nAccept: */*\nUser-Agent: WatchDog\n\n"; sleep 9) |远程登录 xx.xx.xx.xx 8093 正在尝试 xx.xxx.xx.xx... 连接到 xx.xx.xx.xx。 转义字符是'^]'。

连接被外部主机关闭。

**

方法二:

**

(printf "GET http://xx.xx.xx.xx:8093/test.jsp HTTP/1.0\nAccept: */*\nUser-Agent: WatchDog\n\n"; sleep 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. 

为什么method1 不能只在一个环境中运行?我们需要在那个环境中检查一些东西吗?

请提出您的建议...

谢谢, 塞卡

【问题讨论】:

【参考方案1】:

HTTP/1.0 (RFC 1945) 指定以 CR LF 结尾的行。某些服务器可能会严格应用此规则。尝试以 \r\n 作为行尾发送请求。发送绝对 URI 也保留供代理使用(RFC 1945 的第 5.1.2 节)。

如果不同的行尾和 URI 样式对您没有帮助,您将不得不查看服务器配置/实现,因为我看不出方法 1 有什么问题。

【讨论】:

【参考方案2】:

除了must be \r\n 的行尾和应为*/* 而不是/ 的接受标头之外,您的第一个请求没有主机名。

HTTP 1.1 服务器可能会拒绝没有设置主机的 HTTP 请求,无论是在绝对请求 URI 中还是在主机头中。

【讨论】:

"HTTP 1.1 服务器可能会拒绝没有主机集的 HTTP 请求,无论是在绝对请求 URI 还是在主机标头中" -> 你能告诉我在哪些情况下可以发生?因为我们正在向没有主机的 HTTP 1.1 服务器发送 HTTP 请求,并且使用在大多数环境中都可以正常工作的相对路径。 @Sekhar 不,这是一个实施细节,应该与您的网络服务器制造商核实。 RFC 声明服务器可以"attempt to use heuristics (e.g., examination of the URI path for something unique to a particular host) in order to determine what exact resource is being requested."。如果您只是修复您的请求,即发出一个包含主机的有效 HTTP 请求,无论是在标头还是在 URL 中,并使用 \r\n 来分隔标头,它应该适用于所有服务器。

以上是关于使用 telnet 的 HTTP 请求没有得到任何响应的主要内容,如果未能解决你的问题,请参考以下文章

windows下使用telnet测试http

使用telnet发送HTTP请求报文

SMTP Telnet 和 PHP 没有从 HELO 得到任何响应

如何使用 telnet 发出请求?

如何使用 Telnet 发送 HTTP 请求 [关闭]

当我使用 telnet 与 http 服务器通信时,NVT 是不是有任何副作用?