HTTP

报文格式

请求

1
2
3
4
5
6
7
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

GET格式: 请求行 + 请求头
POST格式: 请求行 + 请求头 + 空行 + 请求体

换行符: 标准规定 \r\n ,但是大部分的服务器和浏览器都支持 \n (rfc7230#section-3.5)

请求行: 请求方式 资源路径 协议版本

请求头: key: value

请求体: JSON对象

Server response 响应

状态行 + 响应头 + 空行 + 消息体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 155
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close

<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World, this is a very simple HTML document.</p>
</body>
</html>

请求类型 enctype

x-www-form- 默认

multipart/form-data 可传输文件


title: HTTP协议

请求方式

GET 请求大小有限制

POST 请求大小无限制

请求头含义

Host 主机名

User-Agent 浏览器版本

Accept 资源类型 如 text/* image/* */*

Accept-Language 偏好的语言 如zh-CN

Accept-Encoding 可以支持的压缩类型 如 gzip deflate

Content-Type 请求主体的数据类型

Content-Length 请求主体的大小(单位Byte)

响应

格式: 响应行 + 响应头 + 空行 + 响应体

响应行: 协议 状态码 描述

响应体: 空行后的 ([{id: 1, name: "哈哈"}] 、 .html)

响应状态码

1xx 响应中,临时状态码

2xx 成功

3xx 重定向,客户端行为

4xx 客户端错误

5xx 服务器错误

常见响应状态码

200 OK 处理成功

302 Found 重定向到Location响应头给定的URL
304 Not Modified 未改变,使用本地缓存

400 Bad Request 客户端请求有语法错误
403 Forbidden 拒绝提供服务
404 Not Found 路径未找到
405 Method Not Allowed 请求方式有误,(如必须GET,用了POST)
428 Precondition Required 服务器要求有条件的请求,(如必须携带特定的请求头)
429 Too Many Requests 定时间内请求过多,配合 Retry-After响应头 使用
431 Request Header Fields Too Large 请求头太大,服务器不处理

500 Internal Server Error 服务器端发生不可预期的错误
503 Service Unavailable 服务器尚未准备好处理请求

最常见: 200 404 500

响应头

Content-Type 响应内容的类型

Content-Length 响应内容的长度

Content-Encoding 该响应的压缩算法(如gzip)

Cache-Control 指示客户端应如何缓存(例如max-age=300最多缓存300秒)

Set-Cookie 当前页面所在的域设置cookie

Content-Type 响应类型

上传文件之时使用的:

1
multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

常见的媒体格式类型如下:

1
2
3
4
5
6
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式

以application开头的媒体格式类型:

1
2
3
4
5
6
7
8
application/xhtml+xml :XHTML格式
application/xml : XML数据格式
application/atom+xml :Atom XML聚合格式
application/json : JSON数据格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

其余的需要时查询