HTTPs实用指南 | 青训营

74 阅读3分钟

01 初识HTTP TCP协议的特点是: 面向连接 点对点(一对一) 可靠交付 面向字节流,也就是说仅仅把上层协议传递过来的数据当成字节传输,为了实现TCP上述特点,TCP协议需要解决的是面向链接(建立连接和关闭连接的方式)、可靠传输(错误确认和重传)、流量控制(发送方和接收方的传输速率协调)、拥塞控制四个方面。

02 协议分析 报文 常用请求头 Accept 接收类型,表示浏览器支持的MIME类型(对标服务端返回的Content-Type) Content-Type 客户端发送出去实体内容的类型 Cache-Control 指定请求和响应遵循的缓存机制,如no-cache If-Modified-Since 对应服务端的Last-Modied,用来匹配文件是否变动,只能精确到一秒之内 Expires 缓存控制,在这个时间内不会请求,直接使用缓存,服务端时间 Max-age 代表资源在本地缓存多少秒,有效时间内不会请求,而是使用缓存 If-None-Match 对应服务端的ETag,用来匹配文件内容是否改变(非常精确) Cookie 有cookie并且同域访问时会自动带上 Referer 该页面的来源URL(适用于所有类型的请求,会精确到详细页面地址,csrf拦截常用到这个字段) Origin 最初的请求是从哪里发起的(只会精确到端口),Origin比Referer更尊重隐私 User-Agent 用户客户端的一些必要信息,如UA头部等

常用响应头 Content-Type 服务端返回的实体内容的类型 Cache-Control 指定请求和响应遵循的缓存机制,如no-cache Last-Modified 请求资源的最后修改时间 Expires 应该在什么时候认为文档已经过期,从而不在缓存他 Max-age 客户端的本地资源应该缓存多少秒,开启了Cache-Control后有效 ETag 资源的特定版本的标识符,Etags类似于指纹 Set-Cookie 设置和页面关联的cookie,服务器通过这个头部把cookie传给客户端 Server 服务器的一些相关信息 Access-Control-Allow-Origin 服务器端允许的请求Origin头部(譬如为*)

发展 HTTP/2概述:更快、更稳定、更简单 连接都是永久的,而且仅需要每个来源一个连接

03 场景分析 静态资源方案:缓存+CDN+文件名hash 跨域解决方案: CORS 代理服务器 同源策略是浏览器的安全策略,不是HTTP的 Iframe 诸多不便

适合使用jwt的场景: 有效短期 只希望被使用一次 用户注册后发一封邮件让其激活账户,通常由邮件中需要有一个链接,这个链接需要具备以下的特性:能够标识用户,该连接具有时效性(通常只允许几个小时之内激活),不能被篡改已激活其他可能账户,一次性的。这种场景就适合使用jwt,而由于jwt具有一次性的特性。单机登录和会话管理非常不适合用jwt,如果在服务端部署额外的逻辑存储jwt的状态,那还不如使用session。基于session有很多成熟的框架可以开箱即用,但是用jwt还要自己实现逻辑。

04 实战

思考:学习了https 但是实战还有点难对于我来说。希望能够继续努力