HTTP 协议
约 1007 字大约 3 分钟
2025-02-04
问题
HTTP 协议是?
常见的状态码有哪些?
HTTP 协议概述
HTTP(Hypertext Transfer Protocol)即超文本传输协议,是用于在互联网上传输超文本的协议,它基于客户端 - 服务器模型工作。 客户端(如浏览器)发起请求,服务器接收并处理请求后返回响应。HTTP 是无状态的,这意味着每个请求都是相互独立的,服务器不会记住之前的请求信息, 这种特性使得服务器处理请求的过程更简单、高效,但在需要维护会话状态时,就需要借助额外的机制,如 Cookie 和 Session。
常见状态码
HTTP 状态码由三位数字组成,用于表示请求的结果,常见的状态码分类及示例如下:
1xx(信息性状态码)
表示请求已接收,需要继续处理。
- 100 Continue:客户端在发送大请求体时,先发送一个带有
Expect: 100 - continue
头的请求,若服务器返回此状态码,客户端就可以继续发送请求体。
2xx(成功状态码)
表示请求已成功被服务器接收、理解并处理。
- 200 OK:最常见的成功状态码,表明请求成功,服务器已返回请求的资源。
- 201 Created:请求成功,并且服务器创建了新的资源,常用于
POST
请求创建新记录的场景。 - 204 No Content:请求处理成功,但响应中没有返回任何内容,常用于删除操作成功的响应。
3xx(重定向状态码)
表示需要客户端采取进一步的操作才能完成请求,通常用于重定向到其他 URL。
- 301 Moved Permanently:请求的资源已永久移动到新的 URL,搜索引擎会更新索引。
- 302 Found:请求的资源临时移动到新的 URL,客户端后续仍可使用原 URL 进行请求。
- 304 Not Modified:协商缓存相关状态码,当客户端发送请求并携带缓存相关头信息时,服务器判断资源未更新,返回此状态码,客户端可使用本地缓存。
4xx(客户端错误状态码)
表示客户端的请求有错误,不能被服务器所识别或处理。
- 400 Bad Request:客户端发送的请求语法错误,服务器无法理解,可能是请求参数格式有误。
- 401 Unauthorized:请求需要身份验证,客户端未提供有效的身份验证信息。
- 403 Forbidden:服务器理解请求,但由于权限问题拒绝执行,即使提供了有效身份验证也可能出现。
- 404 Not Found:请求的资源在服务器上不存在。
5xx(服务器错误状态码)
表示服务器在处理请求时发生了错误。
- 500 Internal Server Error:最常见的服务器错误状态码,表明服务器内部发生错误,无法完成请求。
- 503 Service Unavailable:服务器暂时无法处理请求,可能是服务器过载或正在维护,响应头中可能包含
Retry - After
字段指示重试时间。
请求方法及区别
HTTP 定义了多种请求方法,用于不同的操作目的,常见的请求方法及区别如下:
GET
- 用途:从服务器获取资源,请求参数通常附加在 URL 后面,形成查询字符串,如
https://example.com/api/users?id=1
。 - 特点:请求参数会暴露在 URL 中,不安全,且 URL 长度有限制,所以不适用于传递大量数据。常用于获取数据,如获取文章列表、用户信息等。
POST
- 用途:向服务器提交数据,如提交表单数据、上传文件等,数据通常放在请求体中。
- 特点:请求参数不会暴露在 URL 中,相对安全,且可以传递大量数据。常用于创建新资源,如用户注册、提交订单等。