session是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以Cookie或URL重写为基础。默认使用Cookie来实现,系统会创造一个名为JSESSIONID的输出Cookie,或称为"Session Cookie",以区别Persistent Cookies(通常所说的Cookie).Session Cookie是存储在浏览器中,并不是写在硬盘上的,但是把浏览器的Cookie禁止后,使用response对象的encodeURL或encodeRedirectURL方法编码URL,WEB服务器会采URL重写的方式传递Sessionid,用户就可以在地址栏看到jsessionid=A09JHGHKHU68624309UTY84932之类的字符串。
 
通常Session Cookie是不能跨窗口使用,当用户新开了一个浏览器进入相同的页面时,系统会赋予用户一个新的SessionID,这样信息共享的目的就达不到,此时可以把SessionID保存在Persistent Cookie中,然后再新的窗口中读出来,就可以得到上一个窗口的SessionID了,这样通过Session Cookie和Persistent Cookie的结合,实现了跨窗口的会话跟踪。

session的工作原理
就session的实现而言,好像是这样的:
(1)当有Session启动时,服务器生成一个唯一值,称为SessionID(好像是通过取进程ID的方式取得的)。
(2)然后,服务器开辟一块内存,对应于该SessionID。
(3)服务器再将该SessionID写入浏览器的cookie(一些在网页的源代码中有所体现)。
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放该内存块。
(5)当浏览器连入IIS(服务器)时并请求的ASP(脚本语言)内用到Session时,IIS(服务器)就读浏览器Cookie中的SessionID。
(6)然后,服务检查该SessionID所对应的内存是否有效。
(7)如果有效,就读出内存中的值。
(8)如果无效,就建立新的Session。

注意:
(1)在大浏览量的网站,Session并不保险,我们过去的网站就经常碰到存在Session中得值不正确(可能出现重复的Session ID)。
(2)Session ID不能从硬盘上的Cookie文件获得,如果想在客户端获知自己的Session ID,只能通过Javascrīpt来读取。

Cookie和会话状态
做BS开发,这两个概念必不可少,先来个大概了解,没有实际应用很难深入,深入看参考地址!
什么是 Cookie?
Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。 Cookie 的基本工作原理如果用户再次访问站点上的页面,当该用户输入 URLwww.*****.com时,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie。如果该 Cookie 存在,浏览器就将它与页面请求一起发送到您的站点。

Cookie 有哪些用途?
最根本的用途是:Cookie 能够帮助 Web 站点保存有关访问者的信息。更概括地说,Cookie 是一种保持Web 应用程序连续性(即执行“状态管理”)的方法.使 Web 站点记住您.

什么是会话Session?
当用户访问您的站点时,服务器会为该用户创建唯一的会话,会话将一直延续到用户访问结束。

转自:http://www.yuanma.org/data/2006/0908/article_1489.htm

转载于:https://blog.51cto.com/zhengchangbai/778115

Cookies工作原理相关推荐

  1. java中session的作用_java中session的工作原理是什么?和Cookies有何区别?

    现在大家学习的东西和以前大不相同了,越来越多的人倾向于去学习高新技术以获得更好的发展.java是很多人的第一选择.java中的知识还是很多的,今天就来为大家介绍一下. 首先来说一下java中sessi ...

  2. Servlet 工作原理解析

    2019独角兽企业重金招聘Python工程师标准>>> 从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servle ...

  3. 阿里P7工作总结:Spring MVC的工作原理,看完受益匪浅

    这篇文章将深入探讨Spring框架的一部分--Spring Web MVC的强大功能及其内部工作原理. 项目安装 在本文中,我们将使用最新.最好的Spring Framework 5.我们将重点介绍S ...

  4. 会话(cookie的使用,路径和Session的工作原理,使用)

    1.状态管理----Cookie 1.1 为什么需要状态管理 HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就丢掉了. 如果用户发来一个新的请 ...

  5. 【Java】Servlet 工作原理解析

    Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的 ...

  6. Servlet 工作原理解析--转载

    原文:http://www.ibm.com/developerworks/cn/java/j-lo-servlet/index.html?ca=drs- Web 技术成为当今主流的互联网 Web 应用 ...

  7. html图片查看器工作原理,五分钟了解浏览器的工作原理

    Web 浏览器无疑是用户访问互联网最常见的入口.浏览器凭借其免安装和跨平台等优势,逐渐取代了很多传统的富客户端. Web 浏览器通过向 URL 发送网络请求来访问 Web 服务器资源,并以交互性的方式 ...

  8. java spring工作原理_SpringMVC的工作原理是什么样的,跟Spring的关系是怎么样的?

    Spring MVC 的工作原理,很多人都不理解,今天借着题主的这个题目,我在此分享一篇外文翻译的技术贴给大家,希望对大家理解这个知识点有所帮助. 本文将深入探讨Spring框架的一部分--Sprin ...

  9. sysctl.conf工作原理

    2019独角兽企业重金招聘Python工程师标准>>> sysctl.conf工作原理 sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/s ...

最新文章

  1. linux怎么开启samba服务,LINUX开启SAMBA服务
  2. 关于返回结构体的函数
  3. NVIDIA助力SiemensPLMSoftware“工业4.0创新实验室”,携手推进中国制造创新之路
  4. golang atomic load 性能_设计模式之Golang单例模式
  5. 从曾经的无比辉煌,到如今彻底凉凉,万能充到底经历了什么?
  6. java 动态树_使用dtree构建动态树型菜单
  7. linux下的raid及mdadm的命令详解
  8. gmp新附录 计算机系统,GMP新附录:计算机系统
  9. JS生成UUID唯一标识方法
  10. 海尔计算机天越Y3的配置,海尔天越Y3S 拉近你与梦想的距离!
  11. hadoop 下载慢的解决方案
  12. 排列组合的一些公式及推导
  13. 杭州电子科技大学acm--2005
  14. Jquery识别银行卡号码是否正确
  15. Android完美实现kitkat透明导航效果
  16. Linux USB 驱动开发实例(七)—— 基于USB 总线的无线网卡浅析
  17. WOW平衡性设计理念
  18. 离散数学计算机专业论文,计算机与离散数学论文.doc
  19. 与广东未来科技:怀揣初心,并肩同行
  20. 【杰理AC695X】7脚屏PWM控制亮度

热门文章

  1. Vue中data和computed的区别
  2. 135.003 智能合约后端优化和产品化
  3. 7月11日任务 shell介绍、shell结构和执行 、date命令用法、shell脚本中的变量
  4. 深入理解javascript作用域系列第四篇——块作用域
  5. Java之String类
  6. PDC - C#4.0 以及未来
  7. Nodejs教程14:querystring模块
  8. redis企业级应用(下)-如何维护redis的key
  9. Oracle用户被锁定解决方法
  10. docker学习实践之路[第五站]mysql镜像应用