前言
对于前端工程师来说,每天都在和HTTP协议打交道,但是我真的懂HTTP协议吗?并没有,那么不如就现在开始了解吧。
1、HTTP协议的主要特点
- 简单快速:每个资源是固定的,所以简单
- 灵活:每个头部指明了数据类型
- 无状态:每次连接都是一个新的链接,服务端不会记住连接的身份
- 无链接: 连接一次就会断开
2、报文构成
HTTP报文大致可分为报文首部和报文主题两块。两者由最初出现的空行(CR+LF)来划分。报文主体并不是必须的。
1、请求报文
部分 | 功能 |
---|---|
请求行 | 请求方法、URI、HTTP版本 |
请求头 | key:value的键值对 |
空行 | 传输资源 |
请求体 | 传输资源 |
2、响应报文
部分 | 功能 |
---|---|
状态行 | 响应结果的状态码、原因短语、HTTP版本 |
响应头 | 传输资源 |
空行 | 传输资源 |
响应体 | 传输资源 |
常用内容编码:gzip
,comparess
,deflate
,
3、HTTP方法
方法名 | 功能 |
---|---|
GET | 获取资源 |
POST | 传输资源 |
PUT | 更新资源 |
DELETE | 删除资源 |
HEAD | 获取头部信息 |
4、跨域预检
5、HTTP状态码及其作用
1、状态码大类说明
状态码 | 作用 | 详细说明 |
---|---|---|
1xx | Informational(指示信息) | 表示请求已接收,继续处理 |
2xx | Success(请求成功) | 表示请求已被成功接收 |
3xx | Redirection(重定向) | 完成请求,必须进行更进一步的操作 |
4xx | Client Error(客户端错误) | 请求有语法错误或者请求无法实现 |
5xx | Server Error(服务端错误) | 服务器处理请求出错 |
2、常见的14种状态码举例(共有60+种)
HTTP CODE 2xx
状态码:200 ok
含义:客户端请求成功
状态码:204 No Content
含义:请求处理成功,但没有资源科返回。204不允许返回任何实体的主体
状态码:206 Partial Content
含义:客户发送了一个带有Range头的GET请求,服务器完成了它。使用video去播放视频,返回206,说明视频范围
HTTP CODE 3xx
状态码:301 Moved Permanently
含义:永久重定向。该状态吗表示请求的资源已被分配了新的URI,以后应按 Location 首部字段提示的 URI 重新保存。
状态码:302 Found
含义:和 301 Moved Permanently 状态码相似,但 302 状态码代表的资源不是被永久移动,只是临时性质的。
状态码:303 See Other
含义:303 状态码和 302 Found 状态码有着相同的功能,但 303 状态码明确表示客户端应当采用 GET 方法获取资源。
状态码:304 Not Modified
含义:
1、304 虽然被划分在 3XX 类别中,但是和重定向没有关系。
2、资源已找到,但未符合条件请求。
条件请求是啥:
采用 GET方法的请求报文中包含 If-Match
,If-ModifiedSince
,If-None-Match
,If-Range
,If-Unmodified-Since
中任一首部。
HTTP CODE 4xx
状态码:400 Bad Request
含义:请求报文中存在语法错误。当错误发生是,需要修改请求的内容后再次发送请求。
另外,浏览器会像200 OK一样对待该状态码。
状态码:401 Unauthorized
含义:返回含有 401 的响应必须包含一个适用于被请求资源的 WWW-Authenticate
首部用以质询(challenge)用户信息。当浏览器初次接收到 401 响应,会弹出认证用的对话窗口。
状态码:403 Forbidden
含义:该状态码表明对请求资源的访问被服务器拒绝了。服务器端没有必要给出拒绝的详细理由。
未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源 IP 地址试图访问)等列举的情况都可能是发生 403 的原因。
状态码:404 Not Found
含义:该状态吗表明服务器上无法找到请求的资源。
HTTP CODE 5xx
状态码:500 Intertnal Server Error
含义:服务器本身发生错误。也有可能是 Web应用存在的 bug 或某些临时的故障
状态码:503 Intertnal Server Error
含义:该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
参考文献:
图解HTTP