目录
请求报文:
请求方法
响应报文:
状态码 与 状态码描述
共性
常见的报头
请求报文:
请求方法
方法 | 说明 |
GET | 获取资源 |
POST | 传输实体主体 |
PUT | 传输文件 |
HEAD | 获得报文首部 |
DELETE | 删除文件 |
OPTIONS | 询问支持的方法 |
TRACE | 追踪路径 |
CONNECT | 要求用隧道协议连接代理 |
LINK | 建立和资源之间的联系 |
UNLINK | 断开连接关系 |
响应报文:
如果服务器返回了一个 html 页面, 那么 html 页面内容 就是在 响应正文 中.
状态码 与 状态码描述
分类 | 状态码 | 含义 | 解释 |
信息性响应 (1xx):请求已被接收,继续处理。 | 100 | Continue | 初步请求已被接受,客户应当继续发送请求的剩余部分。 |
101 | Switching Protocols | 服务器已经理解了客户端的请求,并将通过升级协议的方式继续处理。 | |
成功响应 (2xx):动作已成功完成。 | 200 | OK | 请求成功,所请求的响应头或数据体将随此响应返回。 |
201 | Created | 请求成功并且服务器创建了新的资源。 | |
204 | No Content | 请求成功但服务器没有需要返回的内容。 | |
重定向响应 (3xx):需要进一步操作以完成请求。 | 301 | Moved Permanently | 请求的网页已永久移动到新位置。 |
302 | Found | 请求的网页临时从不同的URL响应。 | |
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 | 服务器暂时无法处理请求,可能因为过载或维护。 |
共性
怎么分离报头和有效载荷?
空行可以保证在读取报头时,把报头读完。
怎么判断已经把正文读完?
在报头中,会记录正文的长度 Content-Length,在读取正文时,根据正文长度来判断是否已经把正文读完了。如果报文中没有正文,则不会出现该字段。
为什么需要 HTTP 版本?
一个应用会存在新老版本并存的情况,在更新新版本时,不仅客户端需要更新,服务器也需要更新,如果服务器都更新成新版本,但有的客户端还停留在旧版本,那么服务器给客户端提供服务时,也就是服务器和客户端在进行网络通信时,通信可能会出现问题,比如旧版本的客户端不支持新功能。为了确保客户端和服务器之间能够正确地通信,需要在HTTP报文中携带版本号,有了 HTTP 版本后,新版本的客户端就和新版本的服务器匹配,老版本的客户端就和老版本的服务器匹配。
常见的报头
Content-Type | 数据类型,常见的值包括 text/html 、application/json 、application/xml 等。 |
Content-Length | 正文的长度 |
Host | 客户端告知服务器,所请求的资源在哪个主机的哪个端口上 |
User-Agent | 声明用户的操作系统和浏览器版本信息 |
referer | 当前页面是从哪个页面跳转来的 |
Location | 搭配 3XX 状态码使用,告诉客户端接下来要去哪里访问 |
Cookie | 用于在客户端存储少量信息,通常用于实现会话(session)的功能 |