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 有两个的弊端:

  1. cookie 中的所有数据在客户端就可以被修改。这就意味着数据非常容易被伪造,一些重要的数据就不能存放在 cookie 中
  2. 而且如果 cookie 中数据字段太多会影响传输效率。

session 是如何工作的?

为了解决这些问题,就产生了 session,那么 session 又是怎样工作的呢?

  1. 每个 session 都对应一个 session_id,通过 session_id 可以查询到对应的 session
  2. session_id 通常是存放在客户端的 cookie 中,服务端存好 session 之后将对应的 session_id 设置在 cookie 中发送给客户端
  3. 当请求到来时,服务端检查 cookie 中保存的 session_id 并通过这个 session_id 与服务器端的 session 关联起来,进行数据的保存和修改

这意思就是说,当你浏览一个网页时,服务端随机产生一个很长的字符串,然后存在你 cookie 中。当你下次访问时,cookie 会带有这个字符串,然后浏览器就知道你是上次访问过的某某某,然后从服务器的存储中取出上次记录在你身上的数据。由于字符串是随机产生的,而且位数足够多,所以也不担心有人能够伪造。

原文地址:https://www.cnblogs.com/xiaozhijing/p/7883758.html