1Next >
pktsandy | 发表于:11-01-22 13:57 编辑于:01-22 13:58 [添加收藏] 楼主 [回复] #Top# |
---|---|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
这是J道论坛中关于Session、Cookie讨论中一个道友的理解,我觉得很好,就把它给转过来了。
以下是文章内容: 1. HTTP协议本身是“连接-请求-应答-关闭连接”模式的,是一种无状态协议(HTTP只是一个传输协议); 2. Cookie规范是为了给HTTP增加状态跟踪用的(如果要精确把握,建议仔细阅读一下相关的RFC),但不是唯一的手段; 3. 所谓Session,指的是客户端和服务端之间的一段交互过程的状态信息(数据);这个状态如何界定,生命期有多长,这是应用本身的事情; 4. 5. 由于HTTP本身的无状态性,服务端无法知道客户端相继发来的请求是来自一个客户的,所以,当使用服务端HttpSession存储会话数据的时候客户端的每个请求都应该包含一个session的标识(sid, jsessionid 等等)来告诉服务端; 6. 会话数据保存在服务端(如HttpSession)的好处是减少了HTTP请求的长度,提高了网络传输效率;客户端session信息存储则相反; 7. 客户端Session存储只有一个办法:cookie(url rewritting和hidden input因为无法做到持久化,不算,只能作为交换session id的方式,即a method of session tracking),而服务端做法大致也是一个道理:容器有个session管理器(如tomcat的 org.apache.catalina.session包里面的类),提供session的生命周期和持久化管理并提供访问session数据的 api; 8. 使用服务端还是客户端session存储要看应用的实际情况的。一般来说不要求用户注册登录的公共服务系统(如google)采用 cookie做客户端session存储(如google的用户偏好设置),而有用户管理的系统则使用服务端存储。原因很显然:无需用户登录的系统唯一能够标识用户的就是用户的电脑,换一台机器就不知道谁是谁了,服务端session存储根本不管用;而有用户管理的系统则可以通过用户id来管理用户个人数据,从而提供任意复杂的个性化服务; 9.
Ta最近还发表过
[分享]
MYSQL5.5的中文手册
(19-03-22)
[分享]
留言的修改版
(18-02-26)
[分享]
KC PHP源代码剖析(慢慢补充)
(16-02-18)
[使用]
新闻内容页的分页
(14-08-24)
[使用]
货栈评论JS动态翻页
(13-11-08)
随机阅读
[使用]
KingCMS实现排几行排几列产品图片列表(会自动换行的)
(17-12-10)
[疑问]
论坛版发布的帖子可以设置权限吗?
(16-11-21)
[使用]
KC-php后台管理路径修改方法记录
(16-09-12)
[其他]
半小时500+金币
(15-06-15)
[使用]
哪里有ASP版的使用案例?
(13-08-07)
|
springboy390 | 发表于:11-01-27 15:47 沙发 [回复] #Top# |
---|---|
![]() ![]() |
学习了。。。。。
|
1Next >