为什么会有cookie呢,大家都知道,http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过 SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为 JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到 sessionid=KWJHUG6JJM65HS2K6之类的字符串。
明白了原理,我们就可以很容易的分辨出persistent cookies和session cookie的区别了,网上那些关于两者安全性的讨论也就一目了然了,session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,自然不如 session cookie安全了。
通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,这样我们信息共享的目的就达不到了,此时我们可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking(会话跟踪)。
在一些web开发的书中,往往只是简单的把Session和cookie作为两种并列的http传送信息的方式,session cookies位于服务器端,persistent cookie位于客户端,可是session又是以cookie为基础的,明白的两者之间的联系和
区别,我们就不难选择合适的技术来开发web service了
cookie
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。
Cookie是客户端的存储空间,由浏览器来维持。
分享到:
相关推荐
【Session与Cookie原理简述】 Session和Cookie是两种在Web开发中常见的用户状态管理机制,它们主要用于在HTTP协议无状态的特性下跟踪用户状态。理解它们的原理对于编写高效的Web应用至关重要。 **Cookie原理** ...
本项目“flask-session-cookie-manager-master.zip”显然是一款针对Flask Web框架的session管理工具,它专注于session的加密与解密。Flask是一个轻量级的Python Web服务器网关接口(WSGI)应用框架,广泛用于快速...
`cookie`中包含一个唯一的标识符(通常是一个随机字符串),服务器通过这个标识符找到对应在服务器内存中存储的`session`数据。`Flask`使用`itsdangerous`库来实现`session`的安全序列化和签名,以防止数据篡改。 ...
在Web开发中,Cookie和Session是两种非常重要的用户身份验证和会话管理机制。...下面将对Cookie和Session进行深入剖析。...通过"Cookie与Session深入剖析图示"的学习,可以直观地了解两者的工作流程,加深理解。
标题与描述中的关键词“session和cookie区别”指向了两种在Web开发中常用的状态管理技术,它们各自具有独特的特性和用途。下面将详细阐述这两种技术的关键知识点: ### session和cookie的区别 **1. 定义与存储位置...
### Cookie、Session与Token的区别及使用详解 #### 一、Cookie **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),...
用户在每次向服务器发送请求时,都会将这个Session ID带回来,服务器通过这个ID找到对应用户的Session数据,实现对用户状态的追踪。在ThinkPHP5框架中,你可以方便地设置和获取Session,例如: ```php // 设置...
【Session与Cookie】是Web开发中两种常见的会话管理技术,它们主要负责在客户端和服务器之间维护用户状态。 **一、Cookie机制与Session机制的区别** 1. **Cookie机制**:Cookie是在客户端保持状态的方式,服务器将...
2. **标识符**:客户端通过Cookie保存这个SessionID,当用户请求新的页面时,会将SessionID一同发送回服务器,服务器根据这个SessionID找到对应的数据。 3. **生命周期**:Session的生命周期由服务器决定,可以设置...
在设计和实现用户认证、个性化设置等功能时,需要充分考虑性能、安全性和用户体验等因素,合理选择和配置Cookie与Session的使用。通过深入学习,我们可以更好地优化应用性能,提升用户体验,并防止潜在的安全风险。
客户端在后续请求时将session_id带回去,服务器根据这个ID查找对应会话的数据。 2. 特点: - 存储位置:Session数据存储在服务器端,安全性较高,但会占用服务器资源。 - 生命周期:默认情况下,Session在用户...
在Web开发中,Cookie和...总之,Cookie与Session是Web开发中不可或缺的部分,合理利用它们可以帮助我们构建更高效、安全的Web应用程序。在设计系统时,应根据实际需求选择合适的会话管理策略,兼顾用户体验和安全性。
与Session不同,Cookie数据存储在客户端,因此安全性较低,不应用于存储敏感信息。Cookie的生命周期可由服务器设定,比如可以设置为浏览器关闭后立即失效,或者持续一定天数。 **会员登录验证实例**: 在给出的实例...
#### Session与Cookie的基本概念 在Web开发中,了解Session和Cookie是非常重要的,因为它们是实现用户会话管理和状态跟踪的关键技术。简单来说,Session和Cookie都用于存储用户信息,但它们的工作原理、存储位置...
3. **Session与Cookie的区别** - **存储位置**:Cookie存储在客户端,Session存储在服务器端。 - **安全性**:Session比Cookie更安全,因为数据不在客户端暴露。 - **容量限制**:Cookie大小有限制(一般4KB),...
**Session与Cookie** Session和Cookie是Web开发中用于管理用户状态的两种常见技术。它们的主要区别在于数据存储的位置和安全性。 - **Session**: Session将用户的相关信息存储在服务器端,通常是一个键值对的集合...
session是在cookie的基础上,服务端设置session时会向浏览器发送设置一个设置cookie的请求,这个cookie包括session的id当访问服务端时带上这个session_id就可以获取到用户保存在服务端对应的session 二,爬虫处理...
每个用户会话对应一个唯一的Session ID,这个ID通常通过Cookie在客户端和服务器之间传递。当用户首次访问网站时,服务器创建一个新的Session对象,并将Session ID发送给客户端。客户端的浏览器在后续请求中携带此...
【Cookie与Session机制】在Web开发中,会话跟踪是必不可少的技术,用于区分不同用户的操作。常见的会话跟踪手段有Cookie和Session。Cookie是通过在客户端存储信息来识别用户身份,而Session则是在服务器端存储信息来...
与Cookie不同,Session数据不会存储在客户端,而是存储在服务器的内存中,因此更安全。每个Session都关联一个唯一的Session ID,这个ID通过Cookie或者URL重写等方式发送到客户端。客户端每次请求时,服务器根据...