Session 和 Cookie 有什么区别?

最近面试被问到这个问题,和面试官一番讨论了解到面试官心里的答案后,我不太满意。

面对上面的问题,如果是刚毕业时的我,一定会毫不犹豫说出 Cookie 是存在客户端的,Session 存在服务器这个比较“标准”的答案。

现在么,我不打算探讨上面的问题,而是打算抓着 Session 说一说。

抽象层面,Session 的意义是会话。既然是会话,那就意味着每一次交流是有语境的,也就是有上下文的。

要做到这点,我们需要想办法保持(存储)会话的状态。

于是很自然的,我们想到下面的方案。

客户端持有一个门牌号,把会话信息存储在服务端,每次客户端都会带着钥匙发起请求,服务器通过门牌号,领客户端进入房间,就可以开始会话了。

那么客户端的门牌号存放在哪里呢?

在单页应用出现以前,所有数据都是通过服务器写进页面里,然后交给浏览器显示的,并且也没有 LocalStorage, SessionStorage 这样的存储空间供同一个域名下的前端页面们交流,于是这个门牌号就只能存放在 Cookie 里了。这大概就是 Session 和 Cookie 唯一的交集了。

如今,选择的余地大了很多。我们可以把门牌号放在 LocalStorage, SessionStorage 里,如果是单页应用的情况,还可以存放在内存里。

甚至,我们可以把整个会话用的房间也丢在客户端,如果不涉及机密事项的话。

所以 Session 只是一个抽象层面的技术概念,具体实现可以有很多种方案,使用 Cookie 只是其中一种,尽管最早设计出 Cookie 的原因或许正是这个。

以上。

本着讨论一定要出结果的原则,我还是给出开头抛出的问题的答案吧:

Session 跟 Cookie 的区别就像是 Java 跟 JavaScript,所以不要再提这个问题了。

转载于:https://www.cnblogs.com/LoadingChan/p/5051041.html

由 Session 和 Cookie 的区别说起相关推荐

  1. php session和cookie区别,php中session和cookie的区别是什么?

    一.Session (1)Session的由来以及介绍 Session:在计算机中,尤其是在网络应用中,称为"会话控制",生存时间为用户在浏览某个网站时,从进入网站到关闭这个网站所 ...

  2. SESSION 与 COOKIE的区别是

    有以下几点 1.session是存在服务器端,cookie是存在客户端 2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,所以session安全性要比cookie ...

  3. php禁用session和cookies,session与cookie的区别是什么?如果客户端禁用了cookie功能,将会对session有什么影响?...

    cookie 和session 的区别: 1.cookie数据存放在客户的浏览器上,session数据放在服务器上. 2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE ...

  4. session与cookie的简单使用

    嘛~最近在用php做网页的时候苦于每当跳转页面(即使是跳转回自己来更新显示内容)数据就会更新,看来不得不学一下session与cookie的使用了. 首先说一下session和cookie的区别吧. ...

  5. apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 第一时间与你相约 每日英文 Promise yourself to be so strong that nothing can ...

  6. Session和Cookie的学习笔记2

    <?php/*Cookie在计算机中保存的格式用户名@网站地址[数字].txtCookie在文件夹下,每个Cookie文件都是一个简单而又普通的文件件而不是程序,Cookie中的内容大多数据经过 ...

  7. 【转】session和cookie详解

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  8. php中的数据库操作和字符串操作session与cookie操作,php中的数据库操作和字符串操作session与cookie操作...

    PHP面试干货 1.进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一 ...

  9. java cookie全解析(session与cookie的机制和原理)

    http://www.cnblogs.com/agilework/articles/2290240.html 摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚 ...

最新文章

  1. 电话双音频拨号声音中的干扰信号
  2. linux安装软件不同用户名密码,Linux的安装和基本命令
  3. ASP.NET Core EFCore 之Code First
  4. 为什么文件名要小写?
  5. Java使用strategy模式构造程序
  6. PHPer面试指南-前言
  7. html中如何在标题中加样式,html title属性 样式
  8. 蚂蚁金服王旭:开源的意义是把社区往前推进一步
  9. 【思维题 单调栈】loj#2430. 「POI2014」沙拉餐厅 Salad Bar
  10. 第二百二十一节,jQuery EasyUI,Form(表单)组件
  11. Java web 实战项目案例
  12. 给 Android 开发者的 Kotlin 教程(一)
  13. C#程序设计第三版(李春葆)第12章文件操作课后习题答案
  14. 齐全的Latex表格样式(有斜杠)
  15. office如何从非第一页开始插入页码
  16. 论文写作——引言与语言表达
  17. 联萌十一大决战之如日中天 C. Cinderella(灰姑娘新编)
  18. python对话框大小_Python 版 AR 对话框
  19. Linux内核异常分析
  20. 【解决】Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. matplotlib.pylot 画图报错

热门文章

  1. meeting with nate mar 13 meeting notes
  2. 《刺杀小说家》读后感
  3. 【转】跨DLLnew delete问题
  4. python练习程序(批量重命名)
  5. 剑指offer第二版-9.用两个栈实现队列
  6. MongoDB Hot Backup 测试及痛点
  7. python解释器内建函数002
  8. centos6中创建软raid方法
  9. mysql服务器的HA集群之corosync+drbd+pacemaker实现 上
  10. 将.protobuf文件转成.cs文件方法