什么是HTTP


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2020/02/09/%E4%BB%80%E4%B9%88%E6%98%AFHTTP/

摘要

本文主要讲述了:

  1. 什么是 HTTP
  2. HTTP 消息

正文

什么是 HTTP

HTTP 的全称为”Hypertext Transfer Protocol”,中文意为超文本传输协议

HTTP 被广泛用于客户端与服务器端之间的通信,是万维网数据通信的基石,HTTP 的研发由万维网的发明者蒂姆·伯纳斯-李于 1989 年在欧洲核子研究中心发起

HTTP 发展至今已历经多个版本:

  • 1991 年,发布 HTTP/0.9
  • 1996 年,发布 HTTP/1.0
  • 1997 年,发布 HTTP/1.1
  • 2015 年,发布 HTTP/2
  • 2018 年,发布 HTTP/3

HTTP 是一种应用层协议,它通过 TCP 协议在客户端与服务器端之间传输数据

HTTP 资源使用 URL 标志

HTTP 消息

HTTP 消息分为 2 种:

  • 请求消息
  • 响应消息

请求消息

请求消息可以分为 3 部分:

  1. 请求行
  2. 请求头
  3. 请求体

示例:http://127.0.0.1:3000/search?query=123

1
2
3
4
5
6
7
8
9
10
11
12
POST /search?query=123 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: PostmanRuntime/7.22.0
Accept: */*
Cache-Control: no-cache
Postman-Token: e5830f6d-874b-48bf-8f8c-7b76664ec2de
Host: 127.0.0.1:3000
Accept-Encoding: gzip, deflate, br
Content-Length: 11
Connection: keep-alive

a=1&b=2&c=3

请求行

请求行包括以下 3 个元素:

  1. 请求方法
  2. 请求路径
  3. 协议版本

示例:

1
POST /search?query=123 HTTP/1.1

请求头

示例:

1
2
3
4
5
6
7
8
9
Content-Type: application/x-www-form-urlencoded
User-Agent: PostmanRuntime/7.22.0
Accept: */*
Cache-Control: no-cache
Postman-Token: e5830f6d-874b-48bf-8f8c-7b76664ec2de
Host: 127.0.0.1:3000
Accept-Encoding: gzip, deflate, br
Content-Length: 11
Connection: keep-alive

请求体

请求头和请求体之间有一行空行用于表示间隔。

注:并不是所有请求方法都有请求体,例如:GETHEADDELETEOPTIONS就没有请求体。

示例:

1
a=1&b=2&c=3

响应消息

响应消息可以分为 3 部分:

  1. 状态行
  2. 响应头
  3. 响应体

示例:

1
2
3
4
5
6
7
8
9
HTTP/1.1 200 OK
Server: Cowboy
Connection: keep-alive
Date: Wed, 01 Jan 2020 00:00:00 GMT
Content-Type: application/json
Content-Length: 2
Via: 1.1 vegur

[1, 2, 3]

状态行

状态行包括以下 3 个元素:

  1. 协议版本
  2. 状态码
  3. 状态消息

示例:

1
HTTP/1.1 200 OK

响应头

示例:

1
2
3
4
5
6
Server: Cowboy
Connection: keep-alive
Date: Wed, 01 Jan 2020 00:00:00 GMT
Content-Type: application/json
Content-Length: 2
Via: 1.1 vegur

响应体

响应头和响应体之间有一行空行用于表示间隔。

示例:

1
[1, 2, 3]

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2020/02/09/%E4%BB%80%E4%B9%88%E6%98%AFHTTP/


本文对你有帮助?请支持我


支付宝
微信