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)
随机阅读
[模板]
网站psd分层素材
(16-12-08)
[分享]
浅谈如何确定网站的核心关键词
(13-03-28)
[分享]
91个超牛掰的个人网站。希望5年内这里也有英雄出世
(12-10-22)
[疑问]
KingCMS(PHP)怎么增加评论?
(11-11-09)
[使用]
终于知道测试了伪静态的修改
(11-05-31)
|
springboy390 | 发表于:11-01-27 15:47 沙发 [回复] #Top# |
---|---|
![]() ![]() |
学习了。。。。。
|
1Next >