具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。
cookie机制
正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的 cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则 在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该 cookie附在请求资源的HTTP请求头上发送给服务器。
cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie 的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般 不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些 cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的 cookie,不同的浏览器有不同的处理方式
session机制
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
当程序需要为某个客户端的请求创建一个session时, 服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于 SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。
经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如:
1 |
< form name = "testform" action = "http://www.nowamagic.net/xxx" >
|
2 |
< input type = "hidden" name = "jsessionid" value = "ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764" >
|
3 |
< input type = "text" >
|
4 |
</ form >
|
实际上这种技术可以简单的用对action应用URL重写来代替。
相关推荐
在Web开发中,Cookie和Session是两种常见的用户会话管理机制,它们主要用于跟踪用户状态,尤其是在用户登录后保持登录状态。由于HTTP协议本身是无状态的,无法自动识别同一用户的不同请求,因此需要额外的技术来解决...
总结起来,session和cookie是Web开发中不可或缺的工具,理解它们的运作机制和优缺点,能帮助开发者设计出更安全、高效的Web应用。在“php.itcast.cn”的PHP课程中,通过韩忠康老师的讲解,你可以更深入地学习这两个...
《M商城V0.7(使用Filter验证Session)——深入解析源码与工具应用》 在Web开发领域,用户认证和授权是系统...通过对源码的深入学习,开发者不仅可以了解M商城V0.7的运作机制,还能提升自己在Web开发领域的专业技能。
此外,教程可能会讲解如何使用ASP.NET的状态管理机制,如Session、ViewState和Cookie,来在用户会话期间存储和检索数据。同时,也会介绍如何利用ASP.NET的缓存机制来提高应用程序性能。 最后,ASP.NET的错误处理和...
7. session和cookie的使用:讲解如何在Web应用中存储用户状态信息。 8. Web安全:可能涵盖了一些基本的安全实践,如防止SQL注入和XSS攻击。 这份笔记作为学习资源,不仅可以帮助初学者快速理解Java Web开发的核心...
这个"Клиент-сервер"文件可能详细介绍了上述某一部分或全部内容,帮助读者深入理解客户端-服务器架构的运作机制,并提供实际操作的指导。通过学习这个系列,用户将能够构建自己的客户端-服务器应用程序...
它使用Cookie或者URL重写来跟踪会话,同时也支持集群环境下的Session复制和负载均衡。 书中可能还会涉及Tomcat的部署配置,包括web.xml、server.xml等配置文件的解读,以及Context元素、Wrapper元素等配置的详细...
8. **会话管理**:包括Cookie、Session等技术,用于在Web请求之间保持用户状态。 9. **过滤器和监听器**:它们是Java Web中的重要组件,用于拦截请求、响应,实现如日志记录、权限控制等功能。 10. **Web安全**:...
2. 源码分析:通过阅读和分析源码,可理解系统内部运作机制,学习编程技巧和最佳实践。 3. 实战演练:跟随教程,动手搭建和修改系统,增强实际操作能力。 六、系统扩展与优化 1. 集成第三方服务:如支付网关、短信...
6. **存储系统**:包括Cookie、Local Storage、Session Storage、IndexedDB等,用于在浏览器端存储用户数据。 7. **安全性组件**:处理SSL/TLS加密,防止中间人攻击,实施同源策略以保护用户隐私,同时还有沙箱机制...
- **工作原理**:深入了解Spring框架的运作机制。 - **设计原理**:掌握Spring框架的核心设计理念。 - **Struts+Spring+hibernate集成开发**:实现三层架构的Web应用。 5. **SSH综合项目开发** - **项目实战**...