Cookie 与 Session 入门:网站怎样记住你

举报
yd_216009296 发表于 2026/11/10 06:08:01 2026/11/10
【摘要】 你有没有过这样的体验:刚在一个网站上登录完,点开另一个页面,它还记得你是谁,不用重新登录;可过了一段时间再打开,它又把你忘了,让你重新输入账号密码。网站到底是怎样记住你的?答案藏在两个配合工作的机制里:Cookie 和 Session。先说一个前提。网站和浏览器之间的对话天生是健忘的。每一次请求都是独立的,服务器处理完就忘,不会主动记住上一次是谁来过。这种特性叫无状态,好处是简单可靠,坏处是...

你有没有过这样的体验:刚在一个网站上登录完,点开另一个页面,它还记得你是谁,不用重新登录;可过了一段时间再打开,它又把你忘了,让你重新输入账号密码。网站到底是怎样记住你的?答案藏在两个配合工作的机制里:Cookie 和 Session。


先说一个前提。网站和浏览器之间的对话天生是健忘的。每一次请求都是独立的,服务器处理完就忘,不会主动记住上一次是谁来过。这种特性叫无状态,好处是简单可靠,坏处是没法直接实现登录这样的功能。于是人们想了一个办法:给浏览器发一张小纸条,让它下次来的时候主动出示。


这张小纸条就是 Cookie。它是服务器通过响应头交给浏览器的一小段文本,浏览器把它存下来,之后每次访问同一个网站,都会自动把这张纸条夹在请求里带上。纸条上可以写很多东西,比如你的登录凭证编号、语言偏好、购物车里的商品。网站靠认纸条来认人,而不是靠认你这个人。


但纸条本身有个弱点:它存在浏览器里,内容谁都能看到,也可能被篡改。所以聪明的网站不会把密码之类的敏感信息直接写在纸条上,而是只写一个编号。这个编号就像寄存柜的取件码,真正的物品存在服务器那边。这个存在服务器一侧的记录,就是 Session。


两者的配合是这样的。你登录成功后,服务器在自己的内存或数据库里建一条 Session,记下你的账号、登录时间、权限等信息,同时生成一个唯一的编号,把编号写进 Cookie 发给浏览器。此后你每一次访问,浏览器都带着这个编号来,服务器凭编号找到对应的 Session,就知道你是谁、能做什么。你退出登录时,服务器把这条 Session 删掉,编号也就失效了。


这也解释了为什么有时候网站会突然不认得你。第一种可能,是 Cookie 过期了。纸条可以设定有效期,有的只在浏览器关闭前有效,有的能存几天甚至几个月,到期自动作废。第二种可能,是 Session 在服务器那边过期了。服务器不会无限期保留登录状态,常见的空闲超时是半小时到几小时,超过时间没活动,Session 就被清理。第三种可能,是你换了浏览器或者清除了浏览数据,纸条没了,网站自然认不出你。


还有一个常见的疑问:为什么有时关掉浏览器再打开,登录状态还在?那是因为网站把 Cookie 的有效期设得比较长,并且把它存在硬盘上而不是只存在内存里。反过来,有些网站为了安全,每次关闭浏览器就要求重新登录,用的就是只在会话期间有效的 Cookie。


Cookie 和 Session 各有分工。Cookie 负责携带和传递,是浏览器手里的凭证;Session 负责保存状态,是服务器手里的账本。只用 Cookie 不用 Session,敏感信息容易泄露;只用 Session 不用 Cookie,浏览器就没办法在每次请求时证明自己是谁。两者缺一不可。


理解了这对搭档,你也能更好地保护自己的账号。公共电脑上用完网站记得点退出,而不是直接关掉页面,因为只有关掉页面,Cookie 可能还留着,下一个人打开同一个网站可能直接进入你的账号。看到网站让你勾选记住我时,要明白它只是在延长 Cookie 的有效期,自己的电脑上用没问题,别人能碰到的电脑上最好别勾。


下次登录一个网站时,不妨留意一下:它记住你的方式,就是一张小纸条加一本服务器上的账本。简单,却支撑起了整个互联网的登录体验。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。