telnet发送http请求

时间:2012-05-17 03:57:11

标签: http post

我使用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本身的输出?如何避免显示这个?

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

3 个答案:

答案 0 :(得分:5)

HTTP 1.1中,除非另有说明,否则所有连接都被视为persistent

然后......我认为服务器正在接收一些虚假的换行符并使用Bad Request回复。

如果您使用http/1.1代替HTTP/1.1,则可以使版本1.0的版本回退到默认情况下不会持久的版本,并且在200 OK响应之后会丢弃连接。

答案 1 :(得分:1)

尝试将&替换为&amp;

答案 2 :(得分:0)

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

return=fail&error=Configuration doesn't exist

然后您的代码继续打印HTTP 400错误。打印响应后可能忘了中止,所以你的代码也继续打印HTTP 400。