导读:这是J道论坛中关于Session、Cookie讨论中一个道友的理解,我觉得很好,就把它给转过来了。

以下是文章内容:

1. HTTP协议本身是“连接-请求-应答-关闭连接”模式的,是一种无状态协议(HTTP只是一个传输协议);

2. Cookie规范是为了给HTTP增加状态跟踪用的(如果要精确把握,建议仔细阅读一下相关的RFC),但不是唯一的手段;

3. 所谓Session,指的是客户端和服务端之间的一段交互过程的状态信息(数据);这个状态如何界定,生命期有多长,这是应用本身的事情;

4. 由于B/S计算模型中计算是在服务器端完成的,客户端只有简单的显示逻辑,所以,Session数据对客户端应该是透明的不可理解的并且应该受控于服务端;Session数据要么保存到服务端(HttpSession),要么在客户端和服务端之间传递(Cookie或url rewritting或Hidden input);

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. 客户端和服务端的session存储在性能、安全性、跨站能力、编程方便性等方面都有一定的区别,而且优劣并非绝对(譬如TheServerSide号称不使用HttpSession,所以性能好,这很显然:一个具有上亿的访问用户的系统,要在服务端数据库中检索出用户的偏好信息显然是低效的,Session管理器不管用什么数据结构和算法都要耗费大量内存和CPU时间;而用cookie,则根本不用检索和维护session数据,服务器可以做成无状态的,当然高效);

原文链接:http://www.javaeye.com/topic/846916

转载于:https://www.cnblogs.com/waw/articles/2187409.html

对Session、Cookie的完全理解相关推荐

  1. 对session和cookie的一些理解

    对session和cookie的一些理解 由于项目需要,最近用session容器比较多,传载的同时加上了自己的一些理解,不足之处还请大家补充和纠正. 一.cookie机制和session机制的区别 * ...

  2. Asp.net MVC使用Model Binding解除Session, Cookie等依赖

    上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖. 其实这个也可以 ...

  3. 四、Web服务器——Session Cookie JSP入门 学习笔记

    今日内容 1. 会话技术1. Cookie2. Session 2. JSP:入门学习 会话技术 1. 会话:一次会话中包含多次请求和响应.* 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直 ...

  4. thinkphp中的session的使用和理解!

    session的作用:session可以长时间的保存数据,不丢失. session的常用于: 1.登录,保存登录信息 2.保存购物车信息 3.保存验证码信息 定义session常量 define('W ...

  5. [转]老生常谈session,cookie的区别,安全性

    原文地址:[url]http://blog.51yip.com/php/938.html[/url] 一,为什么session,cookie经常会有人提到 做web开发的人基本上都会用session和 ...

  6. session,cookie,sessionStorage,localStorage的区别及应用场景

    浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...

  7. Mock session,cookie,querystring in ASB.NET MVC

    写测试用例的时候经常发现,所写的功能需要Http上下文的支持(session,cookie)这类的. 以下介绍2种应用场景. 用于控制器内Requet获取参数 控制器内的Requet其实是控制器内的属 ...

  8. 【转】接口测试Session/Cookie笔记(二)

    Windows系统运行计算器命令:calc python显示上一步操作命令:Alt+p python显示上一步操作结果:_(英文下划线) Session是存放在服务器的键值对 ,用于保存客户端的某个特 ...

  9. Application,Session,Cookie,ViewState和Cache区别

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...

  10. 打印session cookie

    打印session cookie requests.utils.dict_from_cookiejar(session.cookies)

最新文章

  1. 排序算法—sort(),stable_sort(),merge()
  2. Xcode7.1环境下上架iOS App到AppStore 流程 (2)
  3. MySLQ排序后标记排行
  4. Linux 基础学习:文件权限与种类
  5. Spring EL方法调用实例
  6. import caffe ImportError: No module named 'skimage'
  7. Android BLE学习(二): Android与51822蓝牙模块通信流程的实现与分析
  8. java中线性结构的例子_java数据结构--线性结构
  9. 2017-2018年Scrum状态调查报告
  10. pythonselenium一个简单的自动化测试实战:百度搜索
  11. Python 的多文件和注释
  12. webRTC之fatal error: ‘absl/strings/string_view.h‘ file not found(二十)
  13. Python 多进程multiprocessing
  14. 《About Face 3:交互设计精髓》读书笔记(一)
  15. 连接NI采集箱9181与9184
  16. orc识别较慢_超强orc文字识别免注册版
  17. C++之线程信号量机制
  18. 在IPCAM上实现RTSP协议直播-live555
  19. EXCEL2016设置下拉选项,图文说明
  20. GhostXP_SP3完整纯净版V3.5 By songyongzhi

热门文章

  1. 计算机未来发展趋势四个字概括,授课教师-世界大学城.doc
  2. python小测试1答案_测试1:Python 基本语法(选择题
  3. Java 解析Excel(xls、xlsx两种格式)
  4. 谜题39:您好,再见!
  5. python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
  6. 多少像素才合适 网页设计标准尺寸大讲解
  7. floyd求最小环 模板
  8. 编造机中鼠标无法应用标题问题解答
  9. 又来Hello World了,Hello Python
  10. Spring 框架简介及官方压缩包目录