session和cookie可以这样理解:

1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放 Session。
2. 思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。有人问,如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。
3. Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。
所以,总结一下:
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
也可以这样理解:

本来 session 是一个抽象概念,开发者为了实现中断和继续等操作,将 user agent 和 server 之间一对一的交互,抽象为“会话”,进而衍生出“会话状态”,也就是 session 的概念。

而 cookie 是一个实际存在的东西,http 协议中定义在 header 中的字段。可以认为是 session 的一种后端无状态实现。

而我们今天常说的 “session”,是为了绕开 cookie 的各种限制,通常借助 cookie 本身和后端存储实现的,一种更高级的会话状态实现。

所以 cookie 和 session,你可以认为是同一层次的概念,也可以认为是不同层次的概念。具体到实现,session 因为 session id 的存在,通常要借助 cookie 实现,但这并非必要,只能说是通用性较好的一种实现方案。

session 和cookie的理解相关推荐

  1. Web笔记-session及cookie

    此博文笔记并不全(对于像本人这样开发经验不足的已经够了),只是记录了本人目前对session和cookie的理解,以及在开发时,应该注意些什么. 首先看下两个概念: session:对象存储特定用户会 ...

  2. 深入理解 Session 与 Cookie

    Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问题.在初入职场时恐怕很多程序员在面试的时候都被问到过这个问题.其实这个问题回答起来既简单又复 ...

  3. 对session和cookie的一些理解

    对session和cookie的一些理解 由于项目需要,最近用session容器比较多,传载的同时加上了自己的一些理解,不足之处还请大家补充和纠正. 一.cookie机制和session机制的区别 * ...

  4. 第十章 深入理解Session与Cookie

    理解Cookie 理解Session Cookie安全问题 分布式Session框架 Cookie压缩 表单重复提交问题 多终端Session统一 转载于:https://www.cnblogs.co ...

  5. 对Session、Cookie的完全理解

    导读:这是J道论坛中关于Session.Cookie讨论中一个道友的理解,我觉得很好,就把它给转过来了. 以下是文章内容: 1. HTTP协议本身是"连接-请求-应答-关闭连接"模 ...

  6. 【第10章】深入理解Session与Cookie

    2019独角兽企业重金招聘Python工程师标准>>> 1.理解Cookie1.1.作用:当一个用户通过HTTP访问服务器的时候,服务器会将一些key/value键值对返回给客户端浏 ...

  7. 以微信公众号爬虫为例,谈谈对session、cookie和token认证的理解

    为什么需要这些认证 我们通过浏览器访问多数网站,本质上都可以理解为客户端(用户)和服务端(网站)之间的一次遵循http协议的请求和应答,比如:把a页面给我(返回a.html),删除b图片(删除b.jp ...

  8. 什么是Cookie和Session?—— Cookie和Session的区别?—— 一文教你理解清楚什么是Cookie和Session,以及常见的开发面试问题?

    cookie和session区别 cookie和session 背景说明 1.cookie 1.1.定义 1.2.作用 1.3.组成(种类和参数) 1.3.1.会话 Cookies .永久性 Cook ...

  9. 白话 Session 与 Cookie:从经营杂货店开始

    在Web开发里面有一个历久不衰的议题,那就是Session与Cookie的区别.从我刚开始学程序时这一题就常出现在面试考题里,一直到现在都还是能看见这个问题. 这个问题重要吗? 我觉得满重要的.因为S ...

最新文章

  1. PTA 家庭房产 (图论,暴搜)
  2. 自学python还是报班-学习Python到底是培训还是自学合适呢?
  3. http_build_query用法,挺方便的
  4. 看小说有广告?不可能的,分分钟教你爬取小说
  5. 朱艳梅Java_基于CNKI的大学Java程序设计教学改革文献计量分析
  6. [TypeScript] Interface and Class
  7. 特征提取与检测(一)---Harris与Shi-Tomasi角点检测原理
  8. 机器学习基础(六十)—— 凸优化
  9. django models 配置
  10. applicationcontext获取bean_如果你每次面试前都要去背一篇Spring中Bean的生命周期,请看完这篇文章...
  11. android系统裁剪方法
  12. 010Editor逆向及注册机实现
  13. 夜神模拟器抓包微信小程序
  14. android mjpg格式,Camera常用格式MJPEG和jpeg-turbo库
  15. 蒂森MC2_B系统调试软件 蒂森MC2_B系统调试软件
  16. 国外香港云计算服务器评测,UCLOUD云计算活动及体验香港云主机综合评测记录
  17. TI vs Nordic BLE 产品市场分析
  18. Windows 2012 R2 如何设置同时多点远程系统或3人以上同时登录系统
  19. qt开发是使用QT creator 还是用VS+qt?
  20. pdf转txt java_pdf转换txt怎么操作?pdf文件可以转换成txt文件吗?

热门文章

  1. train和test的列分布差异(covariate shift)观察
  2. 02繁花嗅Django笔记
  3. Arduino总结一
  4. 数据结构:线性数据结构(1)-栈(栈,队列,deques, 列表)
  5. linux gz 解压缩
  6. 引用一个项目作为library的操作步骤---开发中遇到的问题(二)
  7. 命令行解析的规则以及Command Line Parser Library
  8. HDU 2546 饭卡(01背包裸题)
  9. 使用思科模拟器Packet Tracer与GNS3配置IPv6隧道
  10. PAT (Advanced Level) 1035. Password (20)