我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

前端-陈旭辉-20230615

[复制链接]
陌殇 发表于 2023-6-17 10:02:13 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、学习内容

1.路由拆分
核心思想: 将创建服务器和监听路由拆分成两个模块。
优势: 每个js文件都功能单一,有利于项目维护
app.js: 创建并开启服务器、托管静态资源、注册其他中间件、==加载路由模块==
router.js: 监听路由
1) app.js 整体文件
2) 将所有 app.get 路由监听全都剪切到 router.js 文件中
3) 在 router.js 文件中,创建路由对象,再使用路由对象代替app,最后导出路由对象
4) 在 app.js 文件中加载 router.js 模块,并将其注册为中间件
2.为什么需要会话控制技术
HTTP是无状态协议,它不对之前的发生过的请求和响应的状态进行管理。不可否认,无状态协议当然也有它的优点。由于不必保存状态,自然可减少服务器的CPU及内存资源的消耗。从另一方面来说,也正是因为HTTP协议本身是非常简单的,所以才会被应用在各个场景里。
会话控制技术可以在web浏览器与服务器多次请求/响应过程中,实现跟踪用户的功能。

3.cookie
3.1什么是cookie
  • cookie是将==数据持久化==存储到==客户端(浏览器)==的一种技术。
  • ==服务器==可以将数据写到浏览器中, 一个网站最多能在一个浏览器写20个cookie。
  • (Firefox每个域名cookie限制为50个。Opera每个域名cookie限制为30个,Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。)
  • 一个浏览器能够设置的总cookie数最多为300个,==每个不能超过4kb==。
  • cookie既能保存在文件中,也能保存在内存中

3.2设置cookie
  • 核心: ==cookie是随着响应头返回给浏览器的==
  • 设置cookie的核心思想: 使用 res.setHeader 或者 writeHead 将cookie信息设置在响应头中
  • cookie设置格式:key=value;expires=time

    • key: cookie的名称
    • value: 名称对应的值
    • expires: 有效期


3.3读取cookie
一旦网站在浏览器设置好cookie之后,浏览器再访问网站时,cookie信息就会随着==请求头==一起发送给服务器

req.url: 保存了请求url地址
req.method: 保存了请求方式
req.headers: 保存了请求头信息
   在headers中有cookie信息
当cookie设置好之后,浏览器访问任何一个路由时,都能将cookie信息发送给服务器,所以,任何一个路由都能使用  req.headers.cookie 获取cookie信息
3.4 cookie有效期
  • 设置了expires则有效期到expires指定的时间
  • 未设置expires则关闭浏览器cookie即消失


4. token和session的区别

1) token和session其实都是为了身份验证,session一般翻译为会话,而token更多的时候是翻译为令牌;
2) session在服务器端会保存一份,可能保存到缓存、文件或数据库;
3) session和token都是有过期时间,都需要去管理过期时间;
4) token的思想是算法验证,session的思想是信息存储对比。
token是有多种方案的,可以设计成无需存储,token同时也是跨域的,session是要存储的,存储在数据库的思想;
5)其实token与session的问题是一种时间与空间的博弈问题
==session是空间换时间,而token是时间换空间==。两者的选择要看具体情况而定;
6)虽然确实都是“客户端记录,每次访问携带”,但 token 很容易设计为自包含的,
也就是说,后端不需要记录什么东西,每次一个无状态请求,每次解密验证,每次当场得出合法 /非法的结论(时间)。



回复

使用道具 举报

关注0

粉丝0

帖子57

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026