我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录。而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录,而且有的网站还提供购物车的功能。这些简单实用的功能就是通过cookie与Session实现的,接下来,让我们一起探讨一下它们是如何运行的。

1、概念

Cookie

有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

Session

Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。

具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。

需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。

2、区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能大于3K。

3运行机制

3.1、Cookie机制

在程序中, 会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如, 用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于 同一个会话。

而Web应用程序是 使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味 着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话 了。要跟踪该会话,必须引入一种机制。

Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。

由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个 Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该 Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

3.2 Session机制

除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

如下图所示,张三和李四分别访问该网站,在服务端会产生两个SessionID来区分该用户,而在客户端将对应的SessionID存放在Cookie中,以便我们再次访问时得到我们所需的资源。

4总结

这里,我们将cookie跟session简单介绍了一下,至于实际应用还需要我们在做项目中慢慢体会,例如,如何控制他们的生命周期,有效期等等。而且session和cookie是我们必须要掌握的技术,因为我们要经常使用它来进行消息的传递与验证,而且它们还应用在权限控制,单点登录等技术。不管怎么说,我们都应该重视这种简单常用的小技能。

转载于:https://www.cnblogs.com/zhuiluoyu/p/5386240.html

前端页面——Cookie与Session有什么区别相关推荐

  1. Cookie和Session简介与区别

    1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 ...

  2. COOKIE与SESSION的真正区别在哪?

    COOKIE与SESSION比较 1.HTTP协议本身是无状态的. 我们上网都要靠HTTP协议传递信息.比如我们在浏览器里键入:www.sanyalanhua.com这个网址并回车,你会发现网址会变成 ...

  3. 什么是cookie?什么是session?cookie与session有什么区别

    cookie与session的由来: 网址的发展史:1.起初网站都没有保存用户功能的需求,所有用户访问返回的结果都是一样的.比如:新闻网页,博客网页,小说... (这些网页是不需要登录后才能访问的,每 ...

  4. 详解COOKIE和SESSION关系和区别

    (转自个推,理解起来不难) 在技术面试中,经常被问到"说说Cookie和Session的区别",大家都知道,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果 ...

  5. 网络:.cookie和session原理及区别

    一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...

  6. 详解cookie和session之间的区别与联系

    Cookie 什么是 Cookie HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息) 每个HTTP请求都是完全独立的,服务端无法确认当前访 ...

  7. Cookie、Session 和 Token区别

    1 Cookie.Session 和 Token 都是用来做持久化处理的,目的就是让客户端和服务端相互认识.Http 请求默认是不持久的没有状态的,谁也不认识谁. 2 Cookie: 是存放在客户端的 ...

  8. COOKIE和SESSION关系和区别

    一.cookie介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 c ...

  9. 90%的程序员都没有完全回答对 Cookie 和 Session 的区别?

    我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等. ...

最新文章

  1. 干货丨最全技术图谱:一文掌握人工智能各大分支技术(经典好文,值得收藏)
  2. plantuml样式_PlantUML 简明教程
  3. 开发中经常使用到的20个正则表达式
  4. 【Python】解决No name 'QWidget' in module 'PyQt5.QtWidgets'
  5. 06-08 Jenkins 自动化测试持续集成
  6. linux 下的igv软件,Linux IGV 自动画图 -- for 自动化报告
  7. js字符串编码和unicode编码互转
  8. LINGO 11.0安装教程
  9. 数学建模常用模型和算法介绍
  10. mysql无法加载主类_错误: 找不到或无法加载主类 JDBC
  11. 【Python】TX云服务器下CentOS+Python3+Nginx+uwsgi+Bottle搭建Web服务
  12. 计算机英语解读,解释计算机Windows的学习英语
  13. oneapi安装CMAQ
  14. windows安全事件查看及安全事件id汇总
  15. java ee框架技术进阶式教程_《JavaEE框架技术进阶式教程》新版任务式教案
  16. 莫纳什大学 FIT1045 assignment2课业解析
  17. 基于swiftype应用于Hexo-Yilia-主题的站内搜索引擎
  18. 计算机类博士阶段学术规划,计算机博士生职业生涯规划咨询
  19. k8s重新生成token
  20. 游戏平台如何设置公会分成

热门文章

  1. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译
  2. IDEA的Docker插件实战(Dockerfile篇)
  3. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别
  4. 2022-2028年中国丁二烯橡胶行业市场规模研究及前瞻分析报告
  5. 2022-2028年中国水性密封胶行业市场调查研究及未来趋势预测报告
  6. 【JavaScript总结】JavaScript语法基础:JS编码
  7. LeetCode简单题之两个相同字符之间的最长子字符串
  8. TVM性能评估分析(七)
  9. 在C++中加载TorchScript模型
  10. CodeGen准备存储库