经常听人说session和cookie的区别,听得多了连自己都糊涂了。 根本就没这回事。 session和cookie,说到底都是cookie,因为大多数的session是用cookie来实现的。既然两个都是cookie,谈区别就显得很可笑了。
正确的说法是:session和cookie一起用,和只用cookie,两者的区别。 这样说更加反映问题的本质。
常见误区1:cookie数据存放在客户的浏览器上,session数据放在服务器上。
真相:session也要借助cookie,也要存放在客户端。
常见误区2:只要关闭浏览器,session就消失了,而cookie不会消失
真相:正好说反了,只有cookie才会因为浏览器的关闭而消失,session是不会因为浏览器的关闭而消失的,服务端session一般是定期清理,一段时间不用会被删掉。
常见误区3:会话cookie即session,持久cookie即cookie。
真相:很多会话cookie并没有用到JSessionId这种服务端动态生成的机制,也就是说你每次登录进去,cookie都是一模一样的值,但是人家偏偏就是会话cookie。单凭cookie的生效时间、过期时间来判断,是不够的,要看服务端的实现原理。
分享到:
相关推荐
总之,解决登录前后Cookie不一致的问题需要理解Cookie和Session的工作原理,并根据具体的应用场景和所使用的框架进行适当的调整。在实施任何解决方案时,都应考虑性能、安全性和用户体验等因素。
### 关于 "Warning session_start() [function.session-start] Cannot send session cookie" 的解决方案 在进行Web开发时,尤其是在使用PHP语言处理用户会话(session)的过程中,可能会遇到一个常见的错误提示:...
例如,Session\Cookie报错、XML解析错误和页面出现空白等问题。这些问题通常和zencart的版本升级相关,特别是因为升级后数据库、模板和插件可能出现不兼容的情况。此外,插件与zencart版本之间也可能存在兼容性问题...
这样做的原因是`session_start()`不仅启动了一个新的session(如果不存在的话),还会读取已有的session数据,使得`session_destroy()`能够找到并清理相关数据。正确的代码结构应该如下所示: ```php session_...
首先,让我们理解Session阻塞的根本原因。PHP的Session机制依赖于将Session数据存储在文件中,每个客户端对应一个唯一的Session文件。当`session_start()`被调用时,系统会锁定相应的Session文件,以防止多个请求...
WebLogic Server中,两个不同域的应用之间可能存在Session冲突,这通常由于Cookie的覆盖机制所引起。本文将详细解析这个问题的现象、原因以及提供解决方案。 **一、现象分析** 当用户在一个域(例如,域A的9000端口...
P3P(Platform for Privacy Preferences)是一种网页隐私偏好平台,通过P3P头,可以向浏览器声明网站的安全策略,从而允许浏览器接受来自跨域子页面的cookie和session,确保session可以被正确保存和维护。...
并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成...
21. Session和Cookie的主要区别在于存储位置,Session存储在服务器,Cookie存储在客户端。 22. `Double.parseDouble`和`Integer.parseInt`分别将字符串转换为double和int类型,输出结果是12.5。 23. 查找地址字段...
24. Session和Cookie的最大区别在于存储位置,Session存储在服务器端,而Cookie存储在客户端。 25. 邮件发送给多个收件人时,地址间应使用逗号分隔,但题目表述为错误可能是因为在某些邮件系统中,抄送(CC)或密送...
考虑使用Cookie替代Session,或者优化Cache管理策略,如设置合理的缓存大小和更新频率。 4. **SQL Server内存优化**:SQL Server会尽可能地占用所有可用内存,以提高查询性能。通过调整SQL Server的内存设置,可以...
`Optional`类是一个容器对象,它可以包含一个非null值或者根本不包含值。如果值存在,`isPresent()`会返回`true`,调用`get()`会返回该对象。`Optional`提供了许多方法来处理值,例如`map()`, `filter()`, 和 `...
Hibernate 和 SQL 都是访问数据库的技术,但它们有着根本的区别: * Hibernate 是一个基于 jdbc 的对象关系映射(ORM)框架,而 SQL 是一种标准的数据库语言 * Hibernate 提供了高级的对象关系映射功能,而 SQL 只...
Visual Studio中不存在 “发布控件”(选项D),常见的控件包括HTML控件、数据控件和验证控件等。 14. **面向对象编程概念** 下列选项中不属于面向对象方法的是“过程调用”(答案D)。面向对象编程的主要概念...
- **解析**: ASP.NET提供的六个内置对象分别是**Response、Request、Server、Application、Session和Cookie**。这些对象可以帮助开发者处理用户的请求和响应,管理会话状态等。 #### 21. Windows98资源管理器 - **...
Java反序列化漏洞的根本原因在于对序列化数据缺乏有效的校验和控制。攻击者可以通过构造恶意的序列化数据来触发预设的行为,从而达到远程代码执行的目的。为了避免此类漏洞,开发者需要注意以下几点: - **输入验证*...