【跨域】什么是 Session?Cookies与Session的区别?
程序员文章站
2022-07-10 11:10:41
...
什么是 Session?
session 是另一种记录服务器和客户端会话状态的机制
session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中
session 认证流程:
- 用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的 Session
- 请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器
- 浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中,同时 Cookie 记录此 SessionID属于哪个域名
- 当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。
根据以上流程可知,SessionID 是连接 Cookie 和 Session 的一道桥梁,大部分系统也是根据此原理来验证用户登录状态。
使用 session 时需要考虑的问题
- 将 session 存储在服务器里面,当用户同时在线量比较多时,这些 session 会占据较多的内存,需要在服务端定期的去清理过期的session
- 当网站采用集群部署的时候,会遇到多台 web 服务器之间如何做 session 共享的问题。因为 session是由单个服务器创建的,但是处理用户请求的服务器不一定是那个创建 session 的服务器,那么该服务器就无法拿到之前已经放入到session 中的登录凭证之类的信息了。
- 当多个应用要共享 session 时,除了以上问题,还会遇到跨域问题,因为不同的应用可能部署的主机不一样,需要在各个应用做好 cookie跨域的处理。
- sessionId 是存储在 cookie 中的,假如浏览器禁止 cookie 或不支持 cookie 怎么办? 一般会把
sessionId 跟在 url 参数后面即重写 url,所以 session 不一定非得需要靠 cookie 实现 - 移动端对 cookie 的支持不是很好,而 session 需要基于 cookie 实现,所以移动端常用的是 token
session 持久化
- 将 session 存储到数据库中,保证 session 的持久化
优点: 服务器出现问题,session 不会丢失
缺点: 如果网站的访问量很大,把 session 存储到数据库中,会对数据库造成很大压力,还需要增加额外的开销维护数据库。
重温Cookies
请看下面博客:
https://blog.csdn.net/weixin_43352901/article/details/107453296 //如何理解Cookie?
Cookie 和 Session 的区别
- 安全性: Session 比 Cookie 安全,Session 是存储在服务器端的,Cookie 是存储在客户端的。
- 存取值的类型不同:Cookie 只支持存字符串数据,想要设置其他类型的数据,需要将其转换成字符串,Session 可以存任意数据类型。
- 有效期不同: Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session
一般失效时间较短,客户端关闭(默认情况下)或者 Session 超时都会失效。 - 存储大小不同: 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于
Cookie,但是当访问量过多,会占用过多的服务器资源。
上一篇: 淘宝网店故事:她在开拓一种新的服务业
下一篇: 五年网络生涯,我的一些历程和经验
推荐阅读
-
php中http与https跨域共享session的解决方法
-
【跨域】什么是 Session?Cookies与Session的区别?
-
php中http与https跨域共享session的解决方法
-
php中http与https跨域共享session的解决方法,httpssession
-
php中http与https跨域共享session的解决方法_PHP
-
php中http与https跨域共享session的解决方法,httpssession_PHP教程
-
http与https跨域共享session的解决方法
-
php中http与https跨域共享session的解决方法_PHP
-
什么是cookie.session ?他们之间的区别是?(详细介绍)
-
php中http与https跨域共享session的解决方法_php技巧