HTTP实用指南(场景与应用) | 青训营笔记

104 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第9天。

请求静态资源

  • 当状态码为200时,不一定表示发起了请求,也可以是从本地缓存中加载的。以请求掘金官网的index.css为例: HTTP-statistic-resource.jpg
  • 静态资源解决方案:缓存+CDN+文件名Hash

缓存

  • 在响应标头中可以看到缓存设置:
  • age:目前以及缓存时间(ms)
  • cache-control:强缓存,时间为一年。
  • access-control-allow-origin:是允许所有域名访问的。

CDN:content delivery network

  • 通过用户就近性和服务负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。
  • 服务器会把静态资源放到CDN上,比如如图在北京、上海、苏州都部署了CDN边缘结点,若用户位于北京,则会优先从北京CDN边缘结点返回内容。(传输距离短,故时间短)
  • 图片摘自杨超男老师上课时所用PPT。 HTTP-CDN.jpg

文件名Hash

  • 若在缓存时间内,静态资源内容发生了改变,当文件内容改变时,文件名Hash都会发生改变,若加载静态资源时缓存中的文件名Hash对应不上则重新加载。

登陆场景

跨域请求解决方案

  • CORS跨域资源共享
  • 先发出预请求,看服务端是否允许该跨域跨域请求。
  • 相关协议头:Acess-Control-Allow-OriginAcess-Control-Expose-HeadersAcess-Control-Max-Age等。
  • 流程如杨超男老师PPT中图示: HTTP-CORS.jpg
  • 代理服务器
  • 同源策略是浏览器的安全策略,不是HTTP的。
  • 作为中转站转发推送请求和响应。

鉴权方案——下一次进入页面记住登陆状态

参考资料:常见登录鉴权方案(知乎-怡红公子)

Cookie+Session

  • 第一次访问时服务器时,会把登录信息(用户名、密码等)传给服务器,服务器验证信息正确后会生成一个session并存储,并利用Set-Cookie把session放到响应的域名和地址下,二次访问时浏览器会把session携带出来,服务器通过session正确识别用户信息后则返回内容。 HTTP-cookie+session.jpg

JSON Web Token

  • JWT由header(头部),payload(载荷),signature(签证) 这三部分以小数点连接起来。可以想象成其把信息加密起来形成一堆乱码字符串。
  • 应用场景:登陆时服务端会向用户绑定的邮箱发送一段连接验证token。 HTTP-JWT.jpg