Telnet 发送 HTTP 请求。

7
我正在使用telnet发送HTTP请求,类似于这样:


telnet> open 192.168.4.135 8087
Trying 192.168.4.135...
Connected to 192.168.4.135.
Escape character is '^]'.
POST /rpc/ HTTP/1.1
HOST:192.168.4.135:8087
Content-length:18
Content-type:application/x-http-form-urlencoded

action=loadrsctype
HTTP/1.1 200 OK
Date: Thu, 17 May 2012 03:52:53 GMT
Content-Length: 45
Content-Type: text/html; charset=ISO-8859-1

return=fail&error=Configuration doesn't existHTTP/1.1 400 Bad Request
Content-Type: text/html
Connection: close
Date: Thu, 17 May 2012 03:52:53 GMT
Content-Length: 94

<HTML><HEAD>
<TITLE>400 Bad Request</TITLE>
</HEAD><BODY>
<H1>Bad Request</H1>
</BODY></HTML>
Connection closed by foreign host.

响应代码是200,但为什么会出现这样的段落呢?
HTTP/1.1 400 Bad Request
Content-Type: text/html
Connection: close
Date: Thu, 17 May 2012 03:52:53 GMT
Content-Length: 94

<HTML><HEAD>
<TITLE>400 Bad Request</TITLE>
</HEAD><BODY>
<H1>Bad Request</H1>
</BODY></HTML>

这是服务器或telnet本身的输出吗?如何避免显示这个?

--更新-- 当我把“HTTP/1.1”改成“http/1.1”时,我得到了正确的响应。 现在我想知道这是协议要求还是与服务器实现有关?


看起来“200 OK”响应的内容是“return=fail&error=Configuration doesn't exist”,所以似乎这根本没有起作用。您确定URL没问题吗? - Ernest Friedman-Hill
我认为URL没有问题。似乎有两个响应。第一个(return=fail&error=Configuration doesn't exist)是我预期的,但第二个不是。 - Fei Xue
3个回答

5
在HTTP 1.1中,所有连接都被视为“持久连接”,除非另有声明。
然后...我认为服务器正在接收一些虚假的换行符,并回复一个“错误请求”。
如果您使用http/1.1而不是HTTP/1.1,可能会导致版本降级到默认情况下不是持久连接的版本1.0,并在200 OK响应之后断开连接。

1
尝试将&替换为&amp;

0

您正在访问的URL上的代码正在打印一些文本:

return=fail&error=Configuration doesn't exist

但是随后您的代码继续打印HTTP 400错误。可能您忘记在打印响应后中止,因此您的代码继续打印HTTP 400。


所以,我真的认为问题在服务器上。 - Fei Xue
@ccsnailpp:是的,问题出在服务器端的代码中有一个错误。(很抱歉,我一开始假设是您在服务器上运行的代码!) - Malvineous
是的,应该是这样的。服务器既不是Apache也不是Nginx,而是我们团队实现的一个小型服务器。 - Fei Xue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接