使用telnet模拟http请求
HTTP
首先我们需要知道http报文是由一系列的字符串组成的。然后我们来了解具体的相关事项。
方法
HTTP支持几种不同形式的请求命令,这些命令就被称为HTTP方法。每个HTTP请求报文都包含一个方法,这个方法决定了服务区将会执行的动作。
常见的HTTP方法如下:
GET 从服务区向客户端发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中
DELETE 从服务区中删除命名资源
POST 将客户端数据发送到一个服务区网关应用程序
HEAD 仅发送命名资源响应中的HTTP首部
状态码
每条HTTP响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,每条代码一般代表了一个具体的状态。除了状态码,HTTP还会发送一条解释性的原因短语文本。
如:404 NotFound
需要注意的是所有的处理过程使用的都是数字码,所以说哪怕返回的是404 xxxx也是可以的。
报文
HTTP报文都是纯文本。所有对HTTP报文都可以很方便的进行读写。
例:Get /index.htm HTTP/1.0
Accept:text/html
Host: www.baidu.com
Accept-Language:en
例:HTTP/1.0 200OK
Content-type:text/plain
Content-length:19
TEST!
HTTP报文包括三个部分
起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。
首部字段:起始行后的内容被称为首部字段,每个字段都包含一个属性和对应的值,为了便于解析,两者之间使用冒号【:】来分隔。首部以一个空行结束
主体:在首部字段的空行后就是可选的报文主体了,其中包含了所有类型的数据,请求主体中包括了要发送给服务器的数据,响应主体中则包含了需要返回给客户端的数据。起始行和数据字段都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意类型的数据。
在windows下使用telnet www.baidu.com 80
这时会显示空白的命令行,按下【ctrl+]】
回车进入编辑状态,此时又回到空白状态,输入http请求
输入两个回车,即两个\r\n即可得到结果