前端页面——Cookie与Session有什么差别
我们在实际生活中总会遇到这种事情,我们一旦登录(首次输入username和password)某个站点之后,当我们再次訪问的时候(仅仅要不关闭浏览器),无需再次登录。而当我们在这个站点浏览一段时间后,它会产生我们浏览的记录,并且有的站点还提供购物车的功能。这些简单有用的功能就是通过Cookie与Session实现的。接下来。让我们一起探讨一下它们是怎样执行的。
1、概念
Cookie
有时也用其复数形式Cookies。指某些站点为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Session
Session直接翻译成中文比較困难。一般都译成时域。在计算机专业术语中。Session是指一个终端用户与交互系统进行通信的时间间隔。通常指从注冊进入系统到注销退出系统之间所经过的时间。以及假设须要的话,可能还有一定的操作空间。
详细到Web中的Session指的就是用户在浏览某个站点时。从进入站点到关闭这个站点所经过的这段时间,也就是用户浏览这个站点所花费的时间。因此从上述的定义中我们能够看到,Session实际上是一个特定的时间概念。
须要注意的是,一个Session的概念须要包含特定的client,特定的server端以及不中断的操作时间。
A用户和Cserver建立连接时所处的Session同B用户和Cserver建立连接时所处的Session是两个不同的Session。
2、差别
1、cookie数据存放在客户的浏览器上,session数据放在server上
2、cookie不是非常安全,别人能够分析存放在本地的COOKIE并进行
3、session会在一定时间内保存在server上。当訪问增多,会比較占用你server的性能
4、单个cookie在client的限制是3K,就是说一个站点在client存放的COOKIE不能大于3K。
3执行机制
3.1、Cookie机制
在程序中,会话跟踪是非常重要的事情。
理论上,一个用户的全部请求操作都应该属于同一个会话,而还有一个用户的全部请求操作则应该属于还有一个会话。二者不能混淆。
比如,用户A在超市购买的不论什么商品都应该放在A的购物车内。不论是用户A什么时间购买的。这都是属于同一个会话的。不能放入用户B或用户C的购物车内。这不属于同一个会话。
而Web应用程序是使用HTTP协议数据传输的。HTTP协议是无状态的协议。一旦数据交换完成,client与server端的连接就会关闭,再次交换数据须要建立新的连接。
这就意味着server无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时server已经无法推断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。
Cookie就是这种一种机制。它能够弥补HTTP协议无状态的不足。在Session出现之前。基本上全部的站点都採用Cookie来跟踪会话。
由于HTTP是一种无状态的协议,server单从网络连接上无从知道客户身份。怎么办呢?就给client们颁发一个通行证吧,每人一个,不管谁訪问都必须携带自己通行证。这样server就能从通行证上确认客户身份了。这就是Cookie的工作原理。
Cookie实际上是一小段的文本信息。client请求server。假设server须要记录该用户状态,就使用response向client浏览器颁发一个Cookie。
client浏览器会把Cookie保存起来。
当浏览器再请求该站点时,浏览器把请求的网址连同该Cookie一同提交给server。server检查该Cookie。以此来辨认用户状态。server还能够依据须要改动Cookie的内容。
3.2 Session机制
除了使用Cookie,Web应用程序中还常常使用Session来记录client状态。
Session是server端使用的一种记录client状态的机制,使用上比Cookie简单一些,相应的也添加了server的存储压力。
client浏览器訪问server的时候,server把client信息以某种形式记录在server上。
这就是Session。client浏览器再次訪问时仅仅须要从该Session中查找该客户的状态就能够了。
假设说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查server上的“客户明细表”来确认客户身份。
Session相当于程序在server上建立的一份客户档案,客户来訪的时候仅仅须要查询客户档案表就能够了。
例如以下图所看到的。张三和李四分别訪问该站点,在服务端会产生两个SessionID来区分该用户,而在client将相应的SessionID存放在Cookie中。以便我们再次訪问时得到我们所需的资源。
4总结
这里。我们将cookie跟session简介了一下,至于实际应用还须要我们在做项目中慢慢体会,比如,怎样控制他们的生命周期,有效期等等。并且session和cookie是我们必须要掌握的技术。由于我们要常常使用它来进行消息的传递与验证。并且它们还应用在权限控制,单点登录等技术。不管怎么说。我们都应该重视这种简单常常使用的小技能。
前端页面——Cookie与Session有什么差别的更多相关文章
- 前端页面——Cookie与Session有什么区别
我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录.而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录, ...
- Cookie和Session的介绍与认识
Cookie: cookie是一种客户端的状态管理技术. 当浏览器向服务器发送请求的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,当浏览器再次访问服务器时,会将这些数据以c ...
- 《前端之路》之 Cookie && localStorage && Session Storage 缓存相关
08: Cookie && localStorage && Session Storage 缓存相关 客户端.前端 存储 一. 起 因 首先解释下为什么想来写这个关于前 ...
- 一个Login页面全面了解session与cookie
背景 做了四年的前端开发,对外一直说自己是web开发,那么身为一个web开发怎能不知道session与cookie以及其管理方式呢~ Login涉及技术栈:Nodejs,MongoDB,Express ...
- 后端设置cookie写不到前端页面
javax.servlet.http.Cookie cookie = new javax.servlet.http.Cookie("id",session.getId()); co ...
- webform基础介绍及页面传值(session,cookie)、跳转页面
一,IIS 1.首先知道IIS是个什么东西:它是web服务器软件,安装在服务器上,接受客户端发来的请求,并传送给服务器端,然后响应请求并送回给客户端.类似于饭店里的服务员. 2.会安装IIS——控制面 ...
- localstrage、cookie、session等跨域和跨页面监听更新问题
localstrage.cookie.session等跨域和跨页面监听更新问题
- 前端Cookie与Session的区别
我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录.而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录, ...
- Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)
通常验证用户输入是否合法的话,是前端js和后端共同验证的,这是因为前端js是可以被禁用的,假如被禁用了,那就没法用js实现验证合法与否了,也就是即使用户输入的不合法,但是也没提示,用户也不知道怎么输入 ...
随机推荐
- JAVA-JSP内置对象之response对象实现页面自动刷新
相关资料:<21天学通Java Web开发> response对象 实现页面自动刷新1.可以通过response对象的addIntHeader()方法添加一个标题为Refrsh的标头,并指 ...
- flume 多chanel配置
#配置文 a1.sources= r1 a1.sinks= k1 k2 a1.channels= c1 c2 #Describe/configure the source a1.sources.r1. ...
- 阻止SPY++类似的程序捕捉软件窗口
我以前用Spy++能轻易捕捉360软件界面,除了一些应用DHTML制作的窗体.昨天我再用Spy++捕捉的时候捕捉不到了,甚至连最外围的对话框都捕捉不到,显然是做了类似拦截API的处理.下面我也模拟一下 ...
- .Net程序帮助文档制作
一,准备工作 1,首先介绍一款VS的代码注释插件GhostDoc 你也许认为我们在代码中敲入///就能自动生成xml注释,但这种注释是没有说明文字的.而GhostDoc可以生成一些简单的说明文字,如果 ...
- Spark硬件配置推荐
1.存储系统 如果可以的话,把Spark的hadoop的节点安装在一起,最容易的方式是用standalone的模式安装,用mapred.child.java.opts设置每个任务的内存,用mapred ...
- WmS具体解释(二)之怎样理解Window和窗体的关系?基于Android7.0源代码
上篇博客(WmS具体解释(一)之token究竟是什么?基于Android7.0源代码)中我们简要介绍了token的作用,这里涉及到的概念非常多,当中出现频率最高的要数Window和窗体这一对搭档了,那 ...
- 【C】——线程引入 pthread_self 和 pthread_equal 原因 ——解决不同平台的问题!
1.引入pthread_equal的原因: 在线程中,线程ID的类型是pthread_t类型,由于在Linux下线程采用POSIX标准,所以,在不同的系统下,pthread_t的类型是不同的,比如在u ...
- 【oneday_onepage】——Microsoft to acquire Nokia's mobile phone business
Nokia will focus on network infrastructure, mapping and locations services and technology developmen ...
- spring boot 使用拦截器 无法注入 配置值 、bean问题
参考:https://www.cnblogs.com/SimonHu1993/p/8360701.html 一定要将 拦截器组件 交给spring容器进行管理,这样才能注入配置值,或者注入bean: ...
- 半个月使用rust语言的体验
从第一次下载rust语言的编译器到今天刚好第14天. 简单说一下对这个语言的感觉吧. 一.性能 把以前用java写的一个中文地址切分的算法,用rust重新实现了一下(https://github.co ...