【网络协议】【http】http 简单介绍
1 HTTP 头部
HTTP 是一种请求-响应协议,客户端向服务器发送请求,服务器返回响应。
1.1 HTTP 状态码
状态码是服务器返回给客户端 的 三位数字代码 ,用于表示请求的执行结果。
状态码按照首位数字分类:
| 类别 | 范围 | 描述 | 
|---|---|---|
| 1xx | 100-199 | 信息性状态码(Informational),表示请求已接收,服务器继续处理 | 
| 2xx | 200-299 | 成功状态码(Success),表示请求被成功处理 | 
| 3xx | 300-399 | 重定向状态码(Redirection),需要客户端采取进一步操作 | 
| 4xx | 400-499 | 客户端错误(Client Error),表示请求有错误 | 
| 5xx | 500-599 | 服务器错误(Server Error),表示服务器无法处理请求 | 
1xx
提示信息
2xx
成功信息
- 
200 OK」 是最常见的成功状态码,表示一切正常。 如果是非HEAD请求,服务器返回的响应头都会有 body 数据。 但响应头没有 body 数据。
- 
206 Partial Content」是应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。 
重定向,状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源
- 
301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。 
- 
304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称**缓存重定向**,也就是告诉客户端可以继续使用缓存资源,用于缓存控制。 
客户端 发送的报文有误,服务器无法处理,也就是错误码的含义。
- 
400 Bad Request」表示客户端请求的报文有错误,但只是个笼统的错误。 
- 
404 Not Found」表示请求的**资源在服务器上不存在或未找到**,所以无法提供给客户端.。 
客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。
- 
500 Internal Server Error」与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。 
- 
502 Bad Gateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。 
1.2 HTTP 头部属性
1.2.1 请求头(Request Headers)
请求头包含客户端发送给服务器的元信息,例如请求方法、资源路径、客户端信息等。
| 头字段 | 英文名称 | 示例值 | 
|---|---|---|
| 请求方法 | Method | GET/POST/PUT/DELETE | 
| 请求资源URL | Request-URI | /index.html//api/data | 
| 协议版本 | HTTP Version | HTTP/1.1 | 
| 客户端使用程序 | User-Agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64) | 
| 服务器域名 | Host | www.example.com | 
| 连接方式 | Connection | keep-alive/close | 
| 接受数据格式 | Accept | text/html, application/json | 
| 接受压缩格式 | Accept-Encoding | gzip, deflate, br | 
| 发送 Cookie | Cookie | sessionid=abcd1234 | 
| ... | ... | ... | 
1.2.2 响应头(Response Headers)
| 头字段 | 英文名称 | 示例值 | 
|---|---|---|
| 协议版本 | HTTP-Version | HTTP/1.1 | 
| 状态码 | Status-Code | 200 | 
| 状态信息 | Status-Message | OK | 
| 目标服务器 | Server | nginx/1.18.0 | 
| 数据长度 | Content-Length | 1024 | 
| 数据格式 | Content-Type | text/html; charset=UTF-8 | 
| 数据压缩方法 | Content-Encoding | gzip | 
| 设置 Cookie | Set-Cookie | sessionid=abcd1234; Path=/; HttpOnly | 
| ... | ... | ... | 
后续会写一下 http 1.0 1.1 2 3 如果有时间的话