HTTP全称HyperText Transfer Protocol,超文本传输协议。在维基百科上的定义为:HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。
简单来说,就是客户端通过浏览器发起一个请求到服务器80端口,服务器接收到请求就会响应相关的内容给浏览器下载响应的内容,HTTP的作用就是指导浏览器和服务器如何沟通。
下面介绍一下请求和响应:
请求
一.请求一般包括四部分:
·动词 路径 协议/版本
·Key: value
·(回车)
·要上传的数据(可无)
方法1.用curl命令来做一个请求。打开终端,输入命令:curl -s -v -- "https://www.baidu.com",可以得到:
![](https://img.haomeiwen.com/i13943010/1647d2745ceb0d4b.png)
方法2:用Chrome开发者工具查看请求,步骤如下:
(1)打开浏览器页面,右键-检查-找到Network并点击,如下图
![](https://img.haomeiwen.com/i13943010/23babbfc2aaf8f5a.png)
(2)在地址栏输入一个URL并回车,以https://www.baidu.com为例,得到以下页面后,找到Request Headers,并点击旁边的view source
![](https://img.haomeiwen.com/i13943010/11f91e99f4e02934.png)
(3)即可看到我们输入的请求:
![](https://img.haomeiwen.com/i13943010/c80649c51f7de250.png)
另外需要了解的地方还有三点:
(1)路径包括「查询参数」,但不包括「锚点」。例如:https://www.baidu.com/s?wd=Hello&rsv_spt=1#5(https指使用的协议,www.baidu.com代表域名,/s为路径,wd=Hello&rsv_spt=1为查询参数,#5为锚点。锚点可以定位到页面的某一位置。);
(2)如果你没有写路径,那么路径默认为 /;
(3)第 2 部分中的 Content-Type 标注了第 4 部分的格式
2.请求的方法一般有以下几种:GET(获取;向指定的资源发出“显示”请求)、POST(上传;向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件))、PUT(整体更新)、PATCH(局部更新)、DELETE(删除;请求服务器删除Request-URI所标识的资源),另外还有HEAD、OPTIONS等。
响应
一、客户端发出请求后一般都会得到响应。响应也包括四部分:
·协议/版本号 状态码 状态解释
·Key: value
·(回车)
·要下载的内容
对应上面请求的方法1,我们可以得到如下图的响应:
![](https://img.haomeiwen.com/i13943010/209c020e0d0c2849.png)
同样地对应上面的方法二:
(1)在地址栏输入一个URL后,看到下面的页面,找到Respond Header,并点击旁边的view source:
![](https://img.haomeiwen.com/i13943010/7ae005ba83c7ed06.png)
即可得到以下页面:
![](https://img.haomeiwen.com/i13943010/1e1057445d02dafa.png)
(2)点击Response 或者 Preview就会看到响应的第 4 部分
![](https://img.haomeiwen.com/i13943010/a9f34720308061e1.png)
另外需要了解的地方有两点:
(1)第 2 部分中的 Content-Type 标注了第 4 部分的格式
(2)第 2 部分中的 Content-Type 遵循 MIME 规范
最后说一下如何使用curl命令
第一个方法:curl -s -v -H "xxxx: xxx" -- "https://www.baidu.com" 。这个方法在上面的例子我们已经运用过了(H "xxxx: xxx"这一部分可以省略)
第二个方法:curl -X POST -s -v -- "https://www.baidu.com"。(>后的是请求,<后的是响应,下同)下图可以看到由于我们是要POST,那么请求的动词就变成了POST,响应的内容也有所不同,但是格式还是那四部分
![](https://img.haomeiwen.com/i13943010/24794553c0778cd9.png)
第三个方法:curl -X POST -d "1234567890" -s -v -- "https://www.baidu.com"。下图可以看到这次我们添加了要post的数据,此时请求的第二部分多了Content-Length(内容长度)和Content-Type(内容类型)
![](https://img.haomeiwen.com/i13943010/5924a3f1f7d70feb.png)
网友评论