【问题标题】:HTTP request using telnet not getting any response使用 telnet 的 HTTP 请求没有得到任何响应
【发布时间】: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 不能只在一个环境中运行?我们需要在那个环境中检查一些东西吗?

请提出您的建议...

谢谢, 塞卡

【问题讨论】:

    标签: linux http telnet


    【解决方案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 中还是在主机头中。

      【讨论】:

      猜你喜欢
      • 2020-07-06
      • 2013-01-01
      • 2013-05-13
      • 1970-01-01
      • 2023-03-23
      • 2016-05-31
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      相关资源
      最近更新 更多