2 协议分析
2.1 请求方法
GET:一般用于获取资源数据,如获取用户信息、商品信息、首页数据等。POST:一般用于传输/提交资源数据,如提交表单数据、提交字节数据等。HEAD:向服务器发送类似于GET方式的请求,但只要求返回头信息,不返回主体数据。PUT:一般用于修改数据,向指定路径上的资源提交最新数据并将其全量替换。
2.2 请求状态码
1xx/(Informational):信息性状态码,代表请求被成功接受,正在处理请求。2xx/(Success):成功状态码,客户端的请求被成功处理并返回。3xx/(Redirection):重定向状态码,请求的资源位置发生变动,需重新请求。4xx/(ClientError):客户端错误状态码,客户端请求出现错误导致请求失败。5xx/(ServerError):服务端错误状态码,请求的服务端内部错误导致请求无法处理。
2.3 常用请求头
-
Accept:代表客户端支持的数据类型,可选项如下:-
文本类型:
text/html:希望服务器返回HTML类型的数据。text/plain:希望服务器返回普通文本类型的数据。text/css:希望服务器返回CSS类型的数据。application/xml:希望服务器返回XML类型的数据。application/json:希望服务器返回JSON类型的数据。
-
图片类型:
iamge/jpeg:表示希望返回.jpg格式的图片。image/gif:表示希望返回.gif格式的图片。image/png:表示希望返回.png格式的图片。image/webp:表示希望返回.webp格式的图片。
-
视频类型:
video/mpeg:希望服务器返回视频数据。video/quicktime:希望服务器返回MAC电脑的视频类型数据。
-
字节类型:
application/octet-stream:希望返回字节流数据。application/zip:希望返回ZIP压缩字节数据。
-
*/*:表示接受所有类型的数据返回。 -
Accept字段可设置多个值,服务器会依次进行匹配,会返回最先匹配到的数据类型。 -
也可以通过参数
q来设置权重,权重越高,优先级越高,取值范围0.000~1,默认为1。 -
例如
text/html,application/xml;q=0.9,*/*,优先匹配HTML数据,当服务器先匹配到XML数据时,因HTML权重高一些,因此会依然继续匹配HTML数据。
-
-
Accept-Charset:表示客户端支持的字符集,如GB2312,ISO-8859-1,UTF-8等。 -
Accept-Encoding:表示客户端支持的内容编码格式,常用格式如下:gzip:由gzip压缩算法生成的压缩数据编码格式。compress:由compress压缩算法生成的压缩数据编码格式。deflate:由zlib+deflate压缩算法生成的压缩数据编码格式。identity:默认的编码格式,表示不压缩数据。
-
Accept-Language:表示客户端支持的语言语种,如zh-cn,en,zh等。 -
Authorization:表示客户端的认证信息。 -
Host:表示客户端访问的目标资源所在的主机,即域名,如www.baidu.com。 -
Referer:资源引用链,也称为防盗链,表示获取资源的请求来自哪个页面。 -
If-Match:实体标记,该值与请求的目标资源ETag值一致时,服务器才受理该请求。 -
If-Modified-Since:效验客户端本地资源的时效性,如果本地的缓存资源没有超时则不处理请求。 -
If-None-Match:和If-Match作用相反,该值与ETag值不一致时才处理请求。 -
If-Range:If-Match的升级版,访问的资源ETag值或时间一致时,服务器处理此请求。 -
If-Unmodified-Since:If-None-Match的升级版,与If-Range作用相反。 -
Max-Forwards:最大传输逐跳数,也就是请求允许被转发的最大次数,转发一次就-1。 -
Proxy-Authorization:客户端提供给代理服务器的认证信息。 -
Range:表示获取部分资源,如Range:bytes=50-800,代表获取第50~800字节之间的数据。 -
User-Agent:客户端程序的信息,一般情况为当前浏览器的简略信息。 -
TE:传输编码的优先级。
2.4 常用响应头
-
Accept-Ranges:表示服务器是否接受按字节范围获取数据的请求。 -
Age:表示服务器创建响应资源的时间。 -
ETag:实体的标识,资源的匹配信息。 -
Location:告诉客户端资源的重定向位置/(URL)路径。 -
Proxy-Authenticate:将代理服务器需要的认证信息返回给客户端。 -
Retry-After:请求失败后,告诉客户端多久后重试。 -
Server:告知客户端目前服务端的HTTP服务器信息,一般为Nginx。 -
WWW-Authenticate:客户端请求资源失败时,告知其目标资源所需的认证方案,如Basic、Digest,一般配合401使用。 -
status:客户端请求后的响应状态。 -
Vary:代理服务器的缓存管理信息。 -
Set-Cookie:一般用于应答报文中,实现服务器给客户端传递Cookie信息,常用属性如下:-
Key=Value:往客户端的Cookie中写入值。 -
expires=N:设置客户端Cookie的有效期。 -
domin:指定Cookie生效的域名,只有请求该域名时才会携带Cookie。 -
path:指定Cookie生效的具体资源路径,只有访问该路径时才会携带。 -
Secure:设置该属性后,只有安全连接(HTTPS)情况下才会保存Cookie。 -
SameSite:在跨域时是否携带Cookie:Strict:跨域时严禁携带本站Cookie。Lax:默认值,通过GET方式访问之后可允许携带。None:在设置了Secure属性情况下,所有请求都允许携带。
-
HttpOnly:使Cookie不能被JS脚本访问。
-
3 应用场景分析
3.1 静态资源部署,
-
使用CDN(Content Delivery Network)
-
文件名使用文件名哈希,如果文件发生修改,文件名会改变,则用户就能请求最新的资源。
3.2 登录
-
表单登录、扫码登录
-
SSO (单点登录 single sign on)
-
跨域
- 鉴权:session+cookie、token