这是我参与「第四届青训营」笔记创作活动的的第9天。
请求静态资源
- 当状态码为200时,不一定表示发起了请求,也可以是从本地缓存中加载的。以请求掘金官网的index.css为例:
- 静态资源解决方案:缓存+CDN+文件名Hash
缓存
- 在响应标头中可以看到缓存设置:
- age:目前以及缓存时间(ms)
- cache-control:强缓存,时间为一年。
- access-control-allow-origin:是允许所有域名访问的。
CDN:content delivery network
- 通过用户就近性和服务负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。
- 服务器会把静态资源放到CDN上,比如如图在北京、上海、苏州都部署了CDN边缘结点,若用户位于北京,则会优先从北京CDN边缘结点返回内容。(传输距离短,故时间短)
- 图片摘自杨超男老师上课时所用PPT。
文件名Hash
- 若在缓存时间内,静态资源内容发生了改变,当文件内容改变时,文件名Hash都会发生改变,若加载静态资源时缓存中的文件名Hash对应不上则重新加载。
登陆场景
跨域请求解决方案
- CORS跨域资源共享
- 先发出预请求,看服务端是否允许该跨域跨域请求。
- 相关协议头:
Acess-Control-Allow-Origin,Acess-Control-Expose-Headers,Acess-Control-Max-Age等。 - 流程如杨超男老师PPT中图示:
- 代理服务器
- 同源策略是浏览器的安全策略,不是HTTP的。
- 作为中转站转发推送请求和响应。
鉴权方案——下一次进入页面记住登陆状态
Cookie+Session
- 第一次访问时服务器时,会把登录信息(用户名、密码等)传给服务器,服务器验证信息正确后会生成一个session并存储,并利用Set-Cookie把session放到响应的域名和地址下,二次访问时浏览器会把session携带出来,服务器通过session正确识别用户信息后则返回内容。
JSON Web Token
- JWT由header(头部),payload(载荷),signature(签证) 这三部分以小数点连接起来。可以想象成其把信息加密起来形成一堆乱码字符串。
- 应用场景:登陆时服务端会向用户绑定的邮箱发送一段连接验证token。