持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情
1 session和cooikes
session:会话控制
session和cooikes都有一个共同的功能就是自动地保持会话。
客户一般通过浏览器访问server端,当第一次访问呢的时候,则被认为是新用户,可当第二次访问的时候,就应该不被认为是新用户了,可是如何保证这种相识的关系呢?
其实通过打标签,或者说加标记就可以完成,其实,当浏览器访问server的时候,提交了一些自己的信息,例如浏览器的信息,操作系统的信息。这些在http请求的头里都包含,浏览器就可以根据这些信息生成唯一标识,若是使用这些硬件信息和环境信息作为唯一标识的话,相同配置,相同环境的人太多了,无法针对硬件和网络环境区分用户。
- User-Agent:用户代理,每次请求头携带的信息,用户代理其实就是浏览器这个环境。
所以这个时候,当用户访问server的时候,不管来的是谁,服务端都生成一个唯一的一段字符串,将这个字符串存到服务器端,并下发给用户。当用户下次访问的时候,携带这个字符串,服务器就知道是谁来访问了。
这个字符串就叫session,这个session是服务器创建的,所有依靠session的技术都是依靠这个唯一的字符串维持这段会话的。
其实session本质是管理这个字符串的,管理,生成,销毁,过期。
当字符串下发到浏览器,浏览器保存之后,在浏览器端就叫cooikes。
2 token
当禁用掉页面的cookies之后,也可以使用token来充当cookies的角色。
每次请求,都需要在请求体中手动添加那段唯一的字符串。用作鉴权和角色判定。
当使用APP访问服务器的时候,并没有cookies这个概念,这时候更需要手动维护token来确定来访者。在APP端则是表明自己的身份。
3 总结
也就是说,session和cookies是同一串字符串,只是在服务端保存的叫session,在浏览器端存的叫cookies,而token是手动维护的字符串,需要主动的发送和接受。
而session和cookies的作用就是保持会话,当session或者cookies过期之后,则这个会话也就过期了,服务端会终止此次会话。在浏览器端则表现为我们需要重新登录鉴权。
token则类似于令牌,请求数据的时候,先核对令牌以确定权限,也可以根据不同的token给与不同的反馈。一般在登录系统或邀请链接里常见,用作判断用户的依据。