我们在实际生活中总会遇到这种事情,我们一旦登录(首次输入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有什么差别的更多相关文章

  1. 前端页面——Cookie与Session有什么区别

    我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录.而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录, ...

  2. Cookie和Session的介绍与认识

    Cookie: cookie是一种客户端的状态管理技术. 当浏览器向服务器发送请求的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,当浏览器再次访问服务器时,会将这些数据以c ...

  3. 《前端之路》之 Cookie && localStorage && Session Storage 缓存相关

    08: Cookie && localStorage && Session Storage 缓存相关 客户端.前端 存储 一. 起 因 首先解释下为什么想来写这个关于前 ...

  4. 一个Login页面全面了解session与cookie

    背景 做了四年的前端开发,对外一直说自己是web开发,那么身为一个web开发怎能不知道session与cookie以及其管理方式呢~ Login涉及技术栈:Nodejs,MongoDB,Express ...

  5. 后端设置cookie写不到前端页面

    javax.servlet.http.Cookie cookie = new javax.servlet.http.Cookie("id",session.getId()); co ...

  6. webform基础介绍及页面传值(session,cookie)、跳转页面

    一,IIS 1.首先知道IIS是个什么东西:它是web服务器软件,安装在服务器上,接受客户端发来的请求,并传送给服务器端,然后响应请求并送回给客户端.类似于饭店里的服务员. 2.会安装IIS——控制面 ...

  7. localstrage、cookie、session等跨域和跨页面监听更新问题

    localstrage.cookie.session等跨域和跨页面监听更新问题

  8. 前端Cookie与Session的区别

    我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录.而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录, ...

  9. Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)

    通常验证用户输入是否合法的话,是前端js和后端共同验证的,这是因为前端js是可以被禁用的,假如被禁用了,那就没法用js实现验证合法与否了,也就是即使用户输入的不合法,但是也没提示,用户也不知道怎么输入 ...

随机推荐

  1. jetty 7.0 笔记

    codehaus  download:http://dist.codehaus.org/jetty/ 找到7.0  tar.gz 解压 拉取 Lib下jar 和  Lib--jsp下jar 代码同启动 ...

  2. ios 6.1中 Release问题

    程序中有如下代码: UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Something was done." m ...

  3. THINKPHP短链接设置方法(路由设置)

    //路由设置(短链接设置) 'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES' => array( 'log' => 'Login/index', ...

  4. 【应用笔记】【AN005】Qt开发环境下基于RS485的4-20mA电流采集

    简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍在Qt开发环境下基于RS485实现4-20mA电流采集,实现WINDOWS平台对数据的采集.分析及显示. 系统组成 ...

  5. Android动画知识汇总

    Interpolator(插值器) Interpolatort通常在动画中使用,主要来改变动画变化率.常用的有下面几种Interpolator,下面图文解说下: AccelerateDecelerat ...

  6. ubuntu 安装redis

    1. 下载安装: cd /tmp wget http://redis.googlecode.com/files/redis-2.2.4.tar.gz tar -zxf redis-2.2.4.tar. ...

  7. Spring Bean装配学习

    解释:所谓装配就是把一个类需要的组件给它设置进去,英文就是wire,wiring:注解Autowire也叫自动装配. 目前Spring提供了三种配置方案: 在XML中进行显式的配置 在Java中进行显 ...

  8. 【进阶修炼】——改善C#程序质量(3)

    32, 总是优先考虑泛型. 泛型代码有很好的重复利用性,和类型安全性. 33, 应尽量避免在泛型类中声明静态成员. 静态成员达不到共享的目的.List<int>和List<Strin ...

  9. 解決BufferedReader读取UTF-8文件中文乱码(转)

    读取txt文件乱码 BufferedReader read = new BufferedReader(new FileReader(new File(filename))); 解决办法: InputS ...

  10. office2016选择性安装

    office2016在安装的时候并不像之前的版本有选择性的安装,安装器会安装一个office全家桶.那么如何自主选择安装自己需要的工具呢? 微软在下载中心中提供了Office2016部署工具(Offi ...