这是我参与「第四届青训营」笔记创作活动的的第7天,今天我们关心的是在应用层的HTTP协议。
一、什么是HTTP?
-
Hyper Text Transfer Protocol超文本传输协议
-
应用层协议,基于TCP协议
-
请求 响应
-
简单可扩展
-
无状态
二、协议分析
发展
报文
以1.1协议为例, Requests/Responses:start line, HTTP header, empty line, body
请求方法
状态码
状态码的第一位数字决定了不同的响应状态,主要有下面5种:
-
1xx: 表示消息,请求已接收,需要继续处理。
-
2xx: 表示成功,操作被成功接收并处理。
-
3xx: 表示重定向,需要进一步的操作以完成请求。
-
4xx: 表示客户端错误,请求包含语法错误或无法完成请求。
-
5xx: 表示服务器错误,服务器在处理请求的过程中发生了错误。
常用状态码有:
-
200: 请求成功
-
204: 服务器成功处理,但未返回内容
-
301: 请求的资源已被永久的移动到新域名,返回信息包含新域名并会重定向到新的域名。
-
302: 临时移动,不会缓存,常用于未登陆的用户访问用户中心重定向到登录页面
-
304: 所请求的资源未修改,不返回任何资源,进行协商缓存,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
-
400: 客户端请求的语法错误,服务器无法理解
-
401: 请求要求用户身份认证
-
403: 服务器理解请求客户端的请求,但是拒绝执行此请求
-
404: 服务器无法根据客户端的请求找到资源(网页)
-
500: 服务器内部错误,无法完成请求
-
504: 网关超时
常用请求头
常见的HTTP请求头有:
-
Accept,接收的数据类型。
-
Accept-Language,接收的语言。
-
Accept-Encoding,客户端的编码方式。
-
Connection,长连接还是短链接。
-
Host,客户端的主机和端口号。
-
Referer,请求来源网站。
-
User-Agent,客户端的系统和浏览器的信息。
-
Cache-Control,缓存设置(重点)。
-
Cookie,存储用户信息。
-
Range,获取的数据部分。
常用响应头
常见的HTTP响应头有:
-
cache-control,设置缓存方式。
-
content-type,表明资源文件的类型。
-
content-encoding,表明资源的编码。
-
server,服务器的版本。
-
transfer-encoding,资源是分块发送的。
-
expires,设置缓存,优先级比cache-control低。
-
connection,表明是长连接还是短连接。
-
etag,文件的一个标志。
-
refresh,用于重定向。
-
access-control-allow-origin,允许跨域的站点。
-
access-control-allow-methods,跨域请求的请求方法。
-
content-range,文件长度。