telnet发送一个http请求
我正在使用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”时,我得到了正确的回应。 现在我想知道这是协议的要求还是与服务器的实现有关?
在HTTP 1.1
,除非另外声明,否则所有连接均被视为persistent
连接
然后......我认为服务器正在接收一些伪造的新行字符,并用Bad Request
回复。
如果您使用http/1.1
而不是HTTP/1.1
可以将版本回退到版本1.0
,默认情况下该版本不是永久性的,并且在200 OK
响应之后,将丢弃该连接。
您正在访问的URL上的代码正在打印一些文本:
return=fail&error=Configuration doesn't exist
但是,然后你的代码继续打印HTTP 400错误。 打印完响应后,您可能忘记中止了,因此您的代码也会继续打印HTTP 400。
尝试用&
替换&
。