HTTP(Hypertext Transfer Protocol)是一种用于传输超文本和其他内容的应用层协议。
历史:
- HTTP最早的版本是HTTP/0.9,它只支持简单的 GET 请求,而不支持其他操作。
- HTTP/1.0 版本增加了许多新特性,如支持多个请求,请求和响应头信息,以及管道化传输。
- HTTP/1.1 版本是当前最常用的版本,它引入了持久连接、流水线传输和请求优先级等功能。
原理:
- HTTP是基于客户端-服务器模型的协议,客户端向服务器发送请求,服务器收到请求后会返回相应的响应。
- HTTP请求包括请求行、请求头、请求体等部分,其中请求行包括请求方法、请求路径和协议版本;请求头包括各种元数据,如Content-Type、Content-Length等;请求体则是请求的具体内容。
- HTTP响应包括状态行、响应头和响应体等部分,其中状态行包括协议版本、状态码和状态描述;响应头包括各种元数据,如Content-Type、Content-Length等;响应体则是响应的具体内容。
应用:
- HTTP主要用于Web应用程序,客户端通过HTTP请求获取服务器上的资源,如HTML、CSS、JavaScript、图片等。
- HTTP还可以用于实现RESTful API、邮件协议等。
发展:
- HTTP/2.0 引入了二进制协议、多路复用技术、头部压缩等技术,使得协议性能得到了大幅提升。
- HTTP/3.0 使用了QUIC协议,从而实现了更快的传输速度和更低的延迟。
- HTTP/4.0 和 HTTP/5.0 分别引入了Beep协议和WebAssembly技术,从而使得协议更加高效和灵活。
HTTP状态码(HTTP status code)是用于表示HTTP请求处理结果的数字代码。状态码由三位数字组成,第一个数字表示状态码的类型,后面两个数字用于进一步分类。以下是HTTP状态码的一些常见类型和状态码:
1xx:信息性状态码
- 100:继续
- 101:切换协议
2xx:成功状态码
- 200:成功
- 201:创建成功
- 202:接受成功
- 204:删除成功
- 206:部分成功
3xx:重定向状态码
- 300:多种选择
- 301:永久重定向
- 302:暂时重定向
- 304:未修改
- 307:临时重定向
4xx:客户端错误状态码
- 400:请求错误
- 401:未授权
- 403:禁止
- 404:未找到
- 405:方法禁用
- 406:不接受
- 408:请求超时
- 410:资源已删除或不存在
- 415:不支持的媒体类型
5xx:服务器错误状态码
- 500:服务器内部错误
- 501:服务器不具备请求的资源
- 502:错误网关
- 503:服务器不可用或超负载
- 504:网关超时错误
- 505:HTTP版本不受支持
常见状态码中,2xx表示成功,4xx表示客户端错误,5xx表示服务器错误。