session与cookie的区别与联系
---以下来自知乎-----
1.session 在服务器端,cookie在客户端(浏览器)
2.session 默认被存在服务器的一个文件里(不是内存)
3.session 的运行依赖session id,而session id是存在cookie中的,也就是说,如果浏览器禁用了cookie,同时session也会失效(但是可以通过其他方式实现,比如在url中传递session_id)
4.session 可以放在 文件,数据库,或内存中都可以。
5.用户验证场合一般会用session
维持一个会话的核心就是客户端的唯一标识,即session id
cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码
session用来跟踪会话
---以下来自网址---
https://segmentfault.com/a/1190000007243675
-
Cookie 就是浏览器储存在用户电脑上的一小段文本文件
-
Cookie 是纯文本格式,不包含任何可执行的代码
-
Cookie 由键值对构成,由分号和空格隔开
-
Cookie 虽然是存储在浏览器,但是通常由服务器端进行设置
-
Cookie 的大小限制在 4kb 左右
--以下来自网址----
http://mertensming.github.io/2016/10/19/cookie-session/
cookie 虽然很方便,但是使用 cookie 有两个的弊端:
- cookie 中的所有数据在客户端就可以被修改。这就意味着数据非常容易被伪造,一些重要的数据就不能存放在 cookie 中
- 而且如果 cookie 中数据字段太多会影响传输效率。
session 是如何工作的?
为了解决这些问题,就产生了 session,那么 session 又是怎样工作的呢?
- 每个 session 都对应一个 session_id,通过 session_id 可以查询到对应的 session
- session_id 通常是存放在客户端的 cookie 中,服务端存好 session 之后将对应的 session_id 设置在 cookie 中发送给客户端
- 当请求到来时,服务端检查 cookie 中保存的 session_id 并通过这个 session_id 与服务器端的 session 关联起来,进行数据的保存和修改
这意思就是说,当你浏览一个网页时,服务端随机产生一个很长的字符串,然后存在你 cookie 中。当你下次访问时,cookie 会带有这个字符串,然后浏览器就知道你是上次访问过的某某某,然后从服务器的存储中取出上次记录在你身上的数据。由于字符串是随机产生的,而且位数足够多,所以也不担心有人能够伪造。