HTTP基本认识 | 青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第五天,今天学习的内容是HTTP使用指南。HTTP(Hyper Text Transfer Protocol,超文本传输协议)。
协议分析-发展
HTTP/0.9(单行协议) :请求GET/mypage.html、响应只有HTML文档,HTTP/1.0(构建可扩展性):增加了Header、有了状态码、支持多种文档类型等......,HTTP/1.1(标准化协议):增加了链接复用、缓存以及内容协商等......,HTTP/2(更优异的表现):增加了二进制协议、压缩Header、服务器推送等......,HTTP/3(草案)
协议分析-报文
- Method常用值:
GET(请求一个指定资源的表现形式),POST(用于将实体提交到指定的资源),PUT(用请求有效载荷替换目标资源的所有当前表示),DELETE(删除指定资源),HEAD(请求一个与GET请求的响应相同的响应,但没有响应体),CONNECT(建立一个到由目标资源标识的服务器隧道),OPTIONS(用于描述目标资源的通信选项),TRACE(沿着到目标资源的路径执行一个消息回环测试),PATCH(用于对资源应用部分修改) - 状态码:
200(客户端请求成功),301(资源被永久转移到其它URL),302(临时跳转),401(请求未经授权),404(请求资源不存在),500(服务器内部发生了不可预期的错误),504(网关或者代理的服务器无法在规定的时间内获取想要的响应)......。4开头的基本上是与客户端错误有关,5开头基本上是服务端有误。 - 常用请求头
Accept(接收类型,表示浏览器支持的MIME类型(对 标服务端返回的Content-Type)),Content-Type(指定请求和响应遵循的缓存机制,如no-cache),Cache-Control(指定请求和响应遵循的缓存机制,如no-cache),lf-Modified-Since(对应服务端的Last-Modified,用来匹配看文件是否变动,只能精确到1s之内),Expires(缓存控制,在这个时间内不会请求,直接使用缓存,服务端时间),Max-age(代表资源在本地缓存多少秒,有效时间内不会请求,而是使用缓存),lf-None-Match(对应服务端的ETag,用来匹配文件内容是否改变(非常精确)),Cookie(有cookie并且同域访问时会自动带上),Referer(该页面的来源URL(适用于所有类型的请求,会精确到详细页面地址,csrf拦截常用 到这个字段)),Origin(最初的请求是从哪里发起的(只会精确到端口) ,Origin比Referer更 尊重隐私),User-Agent(用户客户端的一些必要信息,如UA头部等)
HTTP/2描述
其特点是更快、更稳定、更简单。
- 帧(frame):HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。
- 消息:与逻辑请求或响应消息对应的完整的一系列帧。
- 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。