部分内容来源:小林coding
Http常见的状态码
1xx(信息性状态码)
- 100 Continue:客户端应继续其请求。
- 101 Switching Protocols:服务器根据客户端的请求切换协议。
2xx(成功状态码)
- 200 OK:请求成功,服务器返回所请求的数据。
- 201 Created:请求成功并且服务器创建了新的资源。
- 202 Accepted:请求已接受,但尚未处理完成。
- 204 No Content:请求成功,但服务器没有返回任何内容。
3xx(重定向状态码)
- 301 Moved Permanently:请求的资源已被永久移动到新位置。
- 302 Found:请求的资源临时从不同的URI响应请求。
- 304 Not Modified:资源未被修改,可以使用缓存的版本(协商缓存,服务器告诉客户端可以使用缓存)。
4xx(客户端错误状态码)
- 400 Bad Request:请求无效或格式错误。
- 401 Unauthorized:请求需要用户认证。
- 403 Forbidden:服务器拒绝请求。
- 404 Not Found:请求的资源不存在。
5xx(服务器错误状态码)
- 500 Internal Server Error:服务器内部错误。
- 501 Not Implemented:服务器不支持请求的功能。
- 502 Bad Gateway:网关或代理服务器收到无效响应。
- 503 Service Unavailable:服务器暂时无法处理请求(可能是过载或维护)
Http中常见的字段
1.Host字段
客户端发送请求时,用来指定服务器的域名
有了 Host
字段,就可以将请求发往「同一台」服务器上的不同网站
2.Content-Length字段
服务器在返回数据时,会有 Content-Length
字段,表明本次回应的数据长度
如上面则是告诉浏览器, 本次服务器回应的数据长度是 1000 个字节,后面的字节就属于下一个回应了。
大家应该都知道 HTTP 是基于 TCP 传输协议进行通信的,而使用了 TCP 传输协议,就会存在一个“粘包”的问题
HTTP header 的边界
HTTP 协议通过设置回车符、换行符作为 HTTP header 的边界
HTTP body 的边界
通过 Content-Length 字段作为 HTTP body 的边界
这两个方式都是为了解决“粘包”的问题
3.Connection字段
Connection
字段最常用于客户端要求服务器使用「HTTP 长连接」机制,以便其他请求复用
HTTP 长连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态
Connection:Keep-Alive
HTTP/1.1 版本的默认连接都是长连接,但为了兼容老版本的 HTTP,需要指定 Connection
首部字段的值为 Keep-Alive
开启了 HTTP Keep-Alive 机制后,连接就不会中断,而是保持连接。当客户端发送另一个请求时,它会使用同一个连接,一直持续到客户端或服务器端提出断开连接
4.Content-Type字段
Content-Type
字段用于服务器回应时,告诉客户端,本次数据是什么格式
发送的是网页,而且编码是UTF-8
客户端声明自己可以接受任何格式的数据
5.Content-Encoding字段
Content-Encoding
字段说明数据的压缩方法
表示服务器返回的数据使用了什么压缩格式
表示服务器返回的数据采用了 gzip 方式压缩,告知客户端需要用此方式解压。
客户端在请求时,用 Accept-Encoding
字段说明自己可以接受哪些压缩方法