平时我们都在用浏览器访问网页,不管是pc端还是移动端,其实都是我们的浏览器(客户端)在与服务器进行交流,而HTTP 的作用就是指导浏览器和服务器如何进行沟通。那么http请求的内容包括哪些?响应的内容又包括哪些?怎么用git去查看浏览器的请求与响应?
http请求
今天要说的http请求包含三种方式,分别是get请求、post请求与post带数据请求三种。
1.get请求(以访问百度为例):
![0aba83546a0f10cb569e025d4c924344.png](https://i-blog.csdnimg.cn/blog_migrate/3b05cd5b3f52ef1f47a31e915d97c01a.jpeg)
上图我用了curl命令行创造了一个请求,并且服务器给了我一个响应,那么现在我就对上图中的请求与响应作出相应的解释。
首先跟大于号一排对应的是请求,相反,跟小于号一排对应的是响应。
我们发出的请求是:
1>GET / HTTP/1.1
GET / HTTP/1.1:我们拆解一下GET / HTTP/1.1,GET:代表请求方式,/:代表路径,因为http://baidu.com后面没有带路径,所以系统帮我们自动加上了,HTTP:代表用的是HTTP协议,1.1代表的是版本号。总体意思就是“我要访问的是根目录,我使用的协议是HTTP,版本号是1.1”。
2> Host: 百度一下,你就知道(www.baidu.com)
告诉百度服务器我们要访问的域名是(http://www.baidu.com)。
3> User-Agent: curl/7.55.0
当前发起curl请求软件的版本号是7.55.0。
4> Accept: */*
告诉百度服务器我接受服务器给我的所有内容。
我们收到的响应是:
< HTTP/1.1 200 OK
使用的协议是HTTP,当前版本是1.1,200代表的是浏览器反馈给你的状态码,由于浏览器状态码太多,你可以看百度(维基),ok就是ok的意思。
< Content-Length: 2381
返回的字符长度是2381个字节。
< Content-Type: text/html
返回的格式是html。
< Date: Thu, 11 Jul 2019 14:26:27 GMT
返回的日期。
2.POST带数据请求:
我们跟上次请求一样,只不过这次换成了post请求。
运行 curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "百度一下,你就知道(www.baidu.com)"之后,服务器给了我们以下响应。
![a0fdae0ee64ae5a5737ed5b3d5d828db.png](https://i-blog.csdnimg.cn/blog_migrate/72e6bf0b515be7ba62b4960d3a991ca5.jpeg)
![f2355b0ae32093a18cf90d30824ad913.png](https://i-blog.csdnimg.cn/blog_migrate/26c6a6747f1c550c2e1882ab898537f4.jpeg)
我们发出的请求是:
>POST / HTTP/1.1
跟get请求类似只不过请求方式变成了post。
> Host: 百度一下,你就知道(www.baidu.com)
同上。
> User-Agent: curl/7.55.0
同上。
> Accept: */*
同上。
> Frank: xxx
这个可以写也可以不写,没有实际意义。
> Content-Length: 10
因为我们带了 1-0 10个字符串向服务器发起了请求。
> Content-Type: application/x-www-form-urlencoded
请求数据的格式。
我们收到的响应是:
< HTTP/1.1 302 Found
同上。
< Content-Length: 17931
返回的字符长度是17931个字节。
< Content-Type: text/html
返回的格式是html。
< Date: Thu, 11 Jul 2019 15:17:49 GMT
响应返回的日期。
3.POST不带数据请求:
![ac75d434dadbe2800466ddae2d3cc8c8.png](https://i-blog.csdnimg.cn/blog_migrate/db04cf4859c0479516cedc0f9228d3c7.png)
![a10ee631e5c46a445f5057eeeb381a10.png](https://i-blog.csdnimg.cn/blog_migrate/63fa8d1f99506477fe7ec7e9326e3029.jpeg)
post不带数据请求跟get请求相类似,只是请求方式不一样,但是GET跟POST存在这本质区别,GET是从指定的资源请求数据,而POST向指定的资源提交要被处理的数据.但是这两种在向server请求或者响应时是没什么区别的。
1.用Chrome开发者工具查看 HTTP 请求内容(还是以访问百度为例)
![8b8eaa131fa9e39aafc07d013d162429.png](https://i-blog.csdnimg.cn/blog_migrate/5a3ef1e51d7c4117dabcee735586aa6f.jpeg)
![273d880e1fb82e8a40c9f84679ce0eed.png](https://i-blog.csdnimg.cn/blog_migrate/1da6345d3b38fd31ff98d31fbc87a1bc.jpeg)
![4807ebc805c9b8b043e20200394c44c7.png](https://i-blog.csdnimg.cn/blog_migrate/22c4912b8351663690075c3e975bde84.jpeg)
![5567863be223d8bd4d381fd0ae033cb0.png](https://i-blog.csdnimg.cn/blog_migrate/ef22e8fa1164af3cb412f874e4146fef.jpeg)
![4d014d146b6e01d77ea7fce2d48e74f7.png](https://i-blog.csdnimg.cn/blog_migrate/5899654eb9c03700e2752248fa960ff4.jpeg)
在chrome调试工具里我标注了请求有四部分
- 第一部分: 动词路径协议/版本
- 第二部分: Content-Type: application/x-www-form-urlencoded
第二部分: Host: http://www.baidu.com - 第三部分永远都是一个回车(
n
) - 要上传的数据
注意点
- 第三部分永远都是一个回车(
n
) - 动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 这里的路径包括「查询参数」,但不包括「锚点」
- 如果你没有写路径,那么路径默认为 /
- 第 2 部分中的 Content-Type 标注了第 4 部分的格式
- 用get也能带数据上传服务器,只是服务器会不接收!
- 第四部分有数据就是数据,没数据就是空。
响应有四部分
1 协议/版本号状态码状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: xxx长度
2 Content-Type: text/html
3
4 要下载的内容第 2 部分中的 Content-Type 标注了第 4 部分的格式第 2 部分中的 Content-Type 遵循 MIME 规范
注意点
- 第 2 部分中的 Content-Type 标注了第 4 部分的格式
- 第 2 部分中的 Content-Type 遵循 MIME 规范
git crul命令:
首先我们看一下完整的crul命令解释
![e6e7e7df1b9cf7bfc873d8106001e584.png](https://i-blog.csdnimg.cn/blog_migrate/272cc917b8bbc560cec58ee843edf682.jpeg)
![d6f894fa959cfa6d5dee8f5f2e28efbb.png](https://i-blog.csdnimg.cn/blog_migrate/d9c87f29848b9f325cd73252c4b974cf.jpeg)
![8e1da41f696ae9f511489053b60e38ef.png](https://i-blog.csdnimg.cn/blog_migrate/c76d2072633a0aeb95c47fad7672b808.jpeg)
![59a45e02036175cd13229d2bb564bb08.png](https://i-blog.csdnimg.cn/blog_migrate/3ce139a76e45686397649d429c136509.jpeg)
![717e494f1a63b5d1831c427392c46070.png](https://i-blog.csdnimg.cn/blog_migrate/4e5d7db307564dc32f7baba107ae1d25.jpeg)
![eab5b121e7bdc7a6f2986d9716a67a4d.png](https://i-blog.csdnimg.cn/blog_migrate/2afc858c035e8340b1e4ce06ae2cd292.jpeg)