session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述和辨析,希望能与大家共同探讨下。
session和cookie的最大区别在于session是保存在服务端的内存里面,而cookie保存于浏览器或客户端文件里面;session是基于访问的进程,记录了一个访问的开始到结束,当浏览器或进程关闭之后,session也就“消失”了,而cookie更多地被用于标识用户,它可以是长久的,用于用户跟踪和识别唯一用户(Unique Visitor)。
关于session
session被用于表示一个持续的连接状态,在网站访问中一般指代客户端浏览器的进程从开启到结束的过程。session其实就是网站分析的访问(visits)度量,表示一个访问的过程。
session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie,这个cookie的默认生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。实现机制是当用户发起一个请求的时候,服务器会检查该请求中是否包含sessionid,如果未包含,则系统会创造一个名为JSESSIONID的输出 cookie返回给浏览器(只放入内存,并不存在硬盘中),并将其以HashTable的形式写到服务器的内存里面;当已经包含sessionid是,服务端会检查找到与该session相匹配的信息,如果存在则直接使用该sessionid,若不存在则重新生成新的 session。这里需要注意的是session始终是有服务端创建的,并非浏览器自己生成的。
但是浏览器的cookie被禁止后session就需要用get方法的URL重写的机制或使用POST方法提交隐藏表单的形式来实现。
这里有一个很关键性的注意点,即session失效时间的设置,这里要分两方面来看:浏览器端和服务端。对于浏览器端而言,session与访问进程直接相关,当浏览器被关闭时,session也随之消失;而服务器端的session失效时间一般是人为设置的,目的是能定期地释放内存空间,减小服务器压力,一般的设置为当会话处于非活动状态达20或30分钟时清除该 session,所以浏览器端和服务端的session并非同时消失的,session的中断也并不一定意味着用户一定离开了该网站。目前Google Analytics和Omniture都定义当间隔30分钟没有动作时,算作一次访问结束,所以上图中session的最后一步不只是离开,也有可能是静止、休眠或者发呆的状态。
还有一点需要注意,就是现在的浏览器好像趋向于多进程的session共享,即通过多个标签或页面打开多个进程访问同一网站时共享一个 session cookie,只有当浏览器被关闭时才会被清除,也就是你有可能在标签中关闭了该网站,但只要浏览器未被关闭并且在服务器端的session未失效前重新开启该网站,那么就还是使用原session进行浏览;而某些浏览器在打开多页面时也可能建立独立的session,IE8、Chrome默认都是共享 session的,在IE8中可以通过菜单栏中的文件->新建会话来建立独立session的浏览页面。
关于cookie
cookie 是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取cookie包含的信息。
session的实现机制里面已经介绍了常见的方法是使用会话cookie(session cookie)的方式,而平常所说的cookie主要指的是另一类cookie——持久cookie(persistent cookies)。持久cookie是指存放于客户端硬盘中的 cookie信息(设置了一定的有效期限),当用户访问某网站时,浏览器就会在本地硬盘上查找与该网站相关联的cookie。如果该cookie 存在,浏览器就将它与页面请求一起通过HTTP报头信息发送到您的站点,然后在系统会比对cookie中各属性和值是否与存放在服务器端的信息一致,并根据比对结果确定用户为“初访者”或者“老客户”。
持久cookie一般会保存用户的用户ID,该信息在用户注册或第一次登录的时候由服务器生成包含域名及相关信息的cookie发送并存放到客户端的硬盘文件上,并设置cookie的过期时间,以便于实现用户的自动登录和网站内容自定义。
Apache自带的mod_usertrack模块可以在用户首次来到当前网站的时候给用户种下一个唯一的cookie(较长时间过期),这个 cookie是用户首次来当前网站的IP地址加上一个随机字符串组成的。同时在自定义WEB日志中在最后增加%{cookie}n字段可以实现 cookie在apache日志中的输出,用于数据统计与用户跟踪
分享到:
相关推荐
### j2ee实验二:学习使用Session和Cookie #### 实验背景与目标 在现代Web应用开发中,理解和掌握会话管理和用户认证是至关重要的。本实验旨在通过一系列实际操作来帮助学生熟悉J2EE环境下Session和Cookie的工作...
### 会话cookie和持久cookie的区别 会话cookie与持久cookie的主要区别在于它们的有效期: - **会话cookie**:没有设置过期时间,其生命周期仅限于当前的浏览器会话。一旦浏览器关闭,这类cookie将被自动清除。 - **...
完全不用session和cookie的验证码,样式自己设置,自己设置字符数
ASP.NET的Session和Cookie是Web开发中的两种关键的用户状态管理技术。它们允许开发者存储和检索用户特定的信息,从而提供个性化的用户体验。了解并熟练掌握这两者,对于任何ASP.NET Web应用程序的开发者来说都至关...
在Web开发中,Session和Cookie是常见的用户状态管理工具,用于跟踪用户在网站上的行为。 Session是服务器端存储用户状态的一种方式。当用户登录网站后,服务器会在服务器端为该用户创建一个唯一的Session ID,并将...
### Session与Cookie的区别和联系 #### 一、概念解析 - **Cookie**:Cookie是一种小型的数据文件,由服务器端生成并发送给用户浏览器,浏览器在本地(如用户的硬盘)保存该文件,然后每一次请求同一网站时都会把该...
JAVA 通过 Session 和 Cookie 实现网站自动登录的技术 在网站开发中,实现自动登录功能是非常重要的,JAVA 通过 Session 和 Cookie 实现网站自动登录的技术是其中的一种方法。本文将详细介绍如何使用 Session 和 ...
在“源码”和“工具”标签的提示下,我们可以推断文章可能涉及了Cookie和Session的实现细节,或许还涵盖了如何在实际项目中使用它们,或者分析了一些常见的库和框架如何处理Session和Cookie。例如,Spring框架提供了...
JavaWeb 使用 Session 和 Cookie 实现登录认证 Session 和 Cookie 是 Web 开发中两种常用的技术,分别用于实现用户会话和客户端数据存储。本文将详细介绍如何使用 Session 和 Cookie 实现登录认证。 什么是 ...
在实际应用中,通常结合使用Cookie和Session。Cookie用于存储用户偏好设置、非敏感的小量数据,而Session用于存储敏感信息或大量数据。同时,考虑到移动设备和隐私政策,开发者需要谨慎处理Cookie的使用,避免过度...
**Session** 和 **Cookie** 是Web开发中用于保持客户端与服务器之间会话状态的重要技术。由于HTTP协议本身是无状态的,即服务器无法自动记录客户端的状态信息,因此需要通过Session和Cookie等技术手段来实现对用户...
### JAVA通过Session和Cookie实现网站自动登录 在现代Web应用开发中,用户认证与授权是极为重要的环节之一。为了提供良好的用户体验,很多网站都提供了自动登录功能,即用户首次登录后,在一定时间内再次访问该网站...
【Session和Cookie】是Web开发中的两种重要技术,用于在客户端和服务器之间管理用户状态。它们主要用于解决HTTP协议无状态的特性,即每次请求都是独立的,无法记住用户信息。 **1. Session** Session是在服务器端...
本文将从多个角度对Session和Cookie进行详细对比,并解释它们各自的特点及应用场景。 #### 一、基本概念 1. **Session**: - **定义**:Session是一种服务器端技术,用于在用户与服务器之间维护会话状态。 - **...
### 对Session和Cookie的深刻理解 #### Session与Cookie的基本概念 在Web开发中,了解Session和Cookie是非常重要的,因为它们是实现用户会话管理和状态跟踪的关键技术。简单来说,Session和Cookie都用于存储用户...
在.NET开发中,Session和Cookie是两种常用的用户状态管理机制,尤其在实现网站的自动登录功能时,它们扮演着至关重要的角色。本文将详细介绍这两种技术及其在实现自动登录中的应用。 首先,Session是服务器端存储...
主要介绍了thinkphp中session和cookie无效的解决方法,涉及针对BOM头的分析与删除方法,具有一定的参考借鉴价值,需要的朋友可以参考下
**标题解析:** "关于Session和Cookie的一个PPT" 指的是一个关于网络应用程序中的会话管理和状态跟踪技术的演示文稿。Session和Cookie是Web开发中的关键概念,用于在用户与服务器之间保持状态。 **描述分析:** ...