Facebook Gmail Twitter 是我们每天都会用的网站 (LCTT 译注: 才不是呢) 它们的共同点在于都需要你登录进去后才能做进一步的操作只有你通过认证并登录后才能在 twitter 发推, 在 Facebook 上评论, 以及在 Gmail 上处理电子邮件经常有人会疑惑: Session 会话与 Cookies 的区别是什么? 用户登录的原理是什么? 网站是如何认证的? 它怎么知道是哪个用户从哪儿登录进来的? 下面将对这些问题进行一一解答
1)session 与 cookie 的简单区别
session 和 cookie 本质上确实是两个东西, 但 cookie 同时也是 session id 的载体, cookie 保存 session id
cookie 数据存放在用户的浏览器上, session 数据放在网站的服务器上
session 保存在服务器端与浏览器设置无关, cookie 在客户端并受浏览器设置限制
cookie 是在你的电脑浏览器上保存的, session 是在网站服务器上的. 也就是说你换一个电脑你的 cookie 就不起作用了, 而 session 只要你的浏览器不关就还能访问到.
通常的都是两者结合着用的. cookie 的话你自己就可以通过对浏览器的设置禁用掉. 这样就不起作用了
cookie 不是很安全, 别人可以分析存放在本地的 cookie 并进行 cookie 欺骗, 考虑到安全应当使用 session
session 是服务器端缓存, cookie 是客户端缓存
cookie 机制采用的是在客户端保持状态的方案, 而 session 机制采用的是在服务器端保持状态的方案
session 会在一定时间内保存在服务器上当访问增多, 会比较占用你服务器的性能, 考虑到减轻服务器性能方面, 应当使用 cookie
session 是服务器保持客户端状态信息的方案, 一般是保存在服务器中的一块内存中, session 超时时间在服务器端进行设置
cookie 是客户端保持用户信息的方案, 一般是文件形式保存, cookie 清空时间是在客户端浏览器设置
从开发角度说, session 信息可以通过技术方案写到客户端保存, cookie 中的用户信息, 也可以在用户访问该网站时, 通过技术手段自动更新用户的 session 信息
单个 cookie 保存的数据不能超过 4K, 很多浏览器都限制一个站点最多保存 20 个 cookie
建议: 将登陆信息等重要信息存放为 session; 其他信息如果需要保留, 可以放在 cookie 中
2)用户登录的原理是什么?
每次用户在网站的登录页面中输入用户名和密码时, 这些信息都会发送到服务器服务器随后会将你的密码与服务器中的密码进行验证
如果两者不匹配, 则你会得到一个错误密码的提示如果两者匹配, 则成功登录
3)用户登录时发生了什么?
登录后, web 服务器会初始化一个会话 session 并在你的浏览器中设置一个 cookie 变量该 cookie 变量用于作为新建会话的一个引用
搞晕了? 让我们说的再简单一点
4)会话的原理是什么?
服务器在用户名和密码都正确的情况下会初始化一个会话会话的定义很复杂, 可以把它理解为关系的开始
认证通过后, 服务器就开始跟用户展开一段关系了由于服务器不能象我们人类一样看东西, 它会在我们的浏览器中设置一个 cookie 来将我们的关系从其他人与服务器的关系标识出来
什么是 Cookie?
cookie 是网站在用户的浏览器中存储的一小段数据当用户登录后, 服务器为用户创建一段关系或者说一个会话, 然后将唯一标识这个会话的会话 id 以 cookie 的形式存储在用户的浏览器中所有这些东西存在的原因在于识别出用户来, 这样当用户写评论或者发推时, 服务器能知道是谁在发评论, 是谁在发推当用户登录后, 会产生一个包含会话 id 的 cookie 这样, 这个会话 id 就被赋予了那个输入正确用户名和密码的人了也就是说, 会话 id 被赋予给了拥有这个账户的人了之后, 所有在网站上产生的行为, 服务器都能通过他们的会话 id 来判断是由谁发起的
如何让用户保持登录状态?
会话有一定的时间限制这一点与现实生活中不一样, 现实生活中的关系可以在不见面的情况下持续很长一段时间, 而会话具有时间限制用户必须要不断地通过一些动作来告诉服务器用户还在线否则的话, 服务器会关掉这个会话, 而用户会被登出不过在某些网站上可以启用 "保持登录" 功能, 这样服务器会将另一个唯一变量以 cookie 的形式保存到我们的浏览器中这个唯一变量会通过与服务器上的变量进行对比来实现自动登录若有人盗取了这个唯一标识(我们称之为 cookie stealing), 他们就能访问用户的账户了
来源: http://www.bubuko.com/infodetail-2502871.html