HTTP 有两类报文:请求报文和响应报文。
请求报文
请求报文由请求行、请求头、请求体组成:
- 请求行由请求方法、URL 和 HTTP 版本组成。常见的请求方法有 get 和 post。它们区别在于:
- GET 的参数写在 URL 中,而 POST 的参数写在报文 body 中。
- GET 是从服务器获取资源,而 POST 是向指定的资源提交数据。
- GET 是只读操作,不会破环服务器的资源,且多次重复操作的结果都相同,所以 GET 是安全且幂等的。而 POST 是提交操作,会破环服务器资源,且多次重复操作的结果都不同,所以 POST 是不安全且不幂等的。
- 请求头主要有:
- User-Agent 浏览器信息
- Accept 浏览器能接受的内容类型
- Content-Type 内容类型
- Content-length 内容长度
- Host 服务器域名。
- 请求体在 POST 方法中使用,存储待提交的数据。
响应报文
响应报文由响应行、响应头、响应体组成:
- 响应行由 HTTP 版本、状态码及其文本描述组成。常见的状态码有:
- 1xx 表示提示
- 2xx 表示服务器成功处理请求。包括: 200:一切正常。204:与 200 类似,但响应头没有 body 数据。206:在 HTTP 分块时,表示一切正常。
- 3xx 表示重定向。包括: 301 永久重定向。302 临时重定向,区别在于请求的资源是否还在。
- 4xx 表示客户端发送的报文有误。包括: 400:通用的错误码。403:表示服务器禁止访问资源。404:表示请求的资源不在服务器上。
- 5xx 表示服务器处理时出错。包括: 500:通用的错误码。501:表示请求的功能还未支持。502:表示服务器工作正常,但访问后端服务器发生了错误。503:表示服务器很忙,暂时无法响应。
- 响应头主要有:Server 服务器信息、Content-Type 内容类型、Content-length 内容长度。
- 响应体存储响应的内容。