全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名
当前位置: 服务端相关   >  HTTP 协议及其请求过程
admin · 更新于 2021-08-06

. 调试工具

Http 协议及其请求过程是用于浏览器与后台服务的数据交互的,选择一个浏览器,笔者下面用 chrome 进行演示。

  1. 打开浏览器;
  2. 快捷键按下 F12;
  3. 地址栏输入 http://www.hanmaweilai.com/
  4. 观察底部 network 栏目的网络请求信息。

2. 协议内容

Http 规定了会话是由客户端发起,服务端响应。发起和响应的消息格式如下:

2.1 请求的消息格式

  • 请求头部信息
get http://www.hanmaweilai.com/ HTTP/1.1
host:117.121.101.134:443
代码块
  • 1
  • 2
关键字说明
get请求的方法
https://www.baidu.com请求的资源定位,URL
HTTP/1.1告诉后台服务器具体请求的协议版本号
host远端服务器的地址
...头部字段还有很多,这边只是列举了必要的,详细的见后面具体章节
  • 请求体内容
keyword:http
name:mooc
代码块
  • 1
  • 2

请求体对应的是具体的业务数据,表单提交的字段,查询接口的参数等。

2.2 解释

可能部分同学会有疑问,上面的两段请求内容跟浏览器的截图不一样,原因是我上面的是 Http 协议标准的定义,浏览器毕竟面向的是用户,对请求的信息有做了解析,更人性化地展示了请求的内容。下面的内容是某个后台服务接收到浏览器请求的具体报文信息,借助 TCPflow 这个工具在 Linux 服务器上面监听的。或者简单的 curl -v http://www.baidu.com/ 也可以看到协议内容。

2.3 响应的消息格式

  • 响应头部信息
HTTP/1.1 200 OK
Date:Sun, 23 Feb 2020 07:31:24 GMT
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 129
Content-Type: application/json; charset=UTF-8
...
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

返回了请求的状态,200状态码对应的就是成功,还有一些链接状态,内容的编码,长度,媒体类型等。

  • 响应的正文
{result: 0, data: ["Vue", "Python", "Java", "flutter", "springboot", "docker", "React", "小程序"],…}
data: ["Vue", "Python", "Java", "flutter", "springboot", "docker", "React", "小程序"]
msg: "成功"
result: 0
代码块
  • 1
  • 2
  • 3
  • 4

返回了消息的具体信息,这个消息有可能是一串 html 文本,也可能是 json 串,图片,附件都有可能,一般是跟 content-type 对应。

3. 小结

在上面的请求内容中,规定了第一个是 method 后面是 url 接着是 protocal/version ,这样的约束就是 http 的协议,服务器收到请求就根据这个规则拆开解析。应用这样的模式,web 的客户端和服务端互相知道了请求的方法,地址,字符编码,参数,响应值等。


为什么选择汉码未来