理解Cookie与Session

  • HTTP本身是无状态的.

    • 这符合HTTP协议设计的目的.客户端只是简单地向服务器请求某种资源.两者都没有必须记录彼此过去的行为,每一次请求之间都是独立的.
    • 为了保存状态.在客户端使用Cookie,在Server端使用Session.
    • 同时,服务器端状态保存方案在客户端也需要保存一个标识.所以,Session可能需要借助Cookie来进行工作.
  • 理解Cookie机制
    • cookie的分发是通过扩展HTTP协议来实现的.服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器生成对应的Cookie.
    • 纯粹的客户端脚本(JS,VS)也可以生成Cookie.
    • 而Cookie的使用是浏览器按照一定的原则在后台自动发送给Server的.
      • 浏览器检查其存储的所有Cookie.如果某个cookie所声明的范围大于等于将要请求的资源的位置,则把该Cookie附在请求资源的HTTP请求头上发送给Server.
    • Cookie的主要内容:名字,值,过期时间,路径和域.
      • 域可与指定为具体的某个域名(google.com).
      • 路径就是跟在域名后面的URL路径(/,/foo).
      • 域+路径构成了cookie的作用范围.
    • 存储
      • 会话cookie.如果没有设定过期时间,则cookie的生命周期为浏览器会话期间.

        • 只要关闭浏览器,cookie就消失了.
        • 一般存储在内存而非硬盘中.
        • 是否可共享跟具体的使用的浏览器有关.
        • 一般使用js中的window.open打开的窗口会与源窗口共享内存cookie.
      • 设置了过期时间的,会被存储在硬盘中.
        • cookie一直有效到超过过期时间.
        • 硬盘中的cookie可以在不同的浏览器进程之间共享(多个IE窗口).
  • 理解Session机制
    • 一种服务器端的机制.

      • 使用散列表(或类似的)形式来保存信息.
    • 服务器需要为客户端的请求生成Session时的处理
      • 首先,检查客户端的请求中是否包含一个SessionID.

        • 如果含有,就说明之前为该客户端创建过Session.然后按照该ID检索出对应的session.
        • 如果没有,则为该客户端生成一个session,并在本次请求响应中将sessionID返回给客户端保存.
      • 保存sessionID可以使用cookie.
        • 这样根据自动传递cookie的规则,浏览器会在下次请求时,自动地将sessionID传递给Server.
        • 由于cookie可以被人为禁止.可使用URL重写来完成SessionID的传递.
          • 就是把sessionID直接附在URL路径的后面.
          • 有两种附加方式.
            • 作为URL的附加信息.表现形式为.http://...XXX;jessionID=xxxxxxxx
            • 作为查询字符串.表现形式为http://....XXX?jessionID=xxxxx.
            • 两种形式在客户端无差异,只是Server端的解析方式不同.第一种有利于区分session和正常的请求.
          • 为了在整个请求过程中保持状态,需要在所有可能的请求路径上都加上sessionID.
        • 另一种技术是表单隐藏字段.
          • Server端自动修改表单,添加一个hidden域,name="jessionID",value=sessionID.
          • 这样,客户端提交表单时,就能把sessionID提交到server.
    • session超时.
      • 除非程序通知Server删除一个Session,否则Server会一直保持Session.
      • 浏览器在关闭时,不会主动通知Server它将要关闭.因此服务器不会有机会知道浏览器已经关闭.
      • 只要关闭浏览器,Session就丢失了
        • 因为大部分的session机制都是用了会话cookie来保存sessionID.
        • 而关闭浏览器后,随着会话cookie的消失,这个sessionID也就消失了.
        • 再次连接Server时,也就无法找到原来的session.
        • 如果cookie被保存在硬盘中,或者改写了HTTP的请求头,能够把原来的sessionID发送给server,那么还是能够找到原来的Session.
      • 由于关闭浏览器不会导致删除session,所以server会为session设置一个失效时间.
        • 当距离客户端上次使用session的时间超过了该失效时间.服务器可以认为客户端已经停止了活动,从而删除session来节省存储空间.

理解Cookie与Session,布布扣,bubuko.com

时间: 2024-08-05 13:25:23

理解Cookie与Session的相关文章

基础知识《十二》一篇文章理解Cookie和Session

理解Cookie和Session机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. 一.Cookie机制 Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文

深入理解Cookie和Session机制

首先为了让我们能够对Cookie和Session有一个初步的理解,先给出一个问题和一个例子来引出Cookie和Session,然后随后带着问题再去思考Cookie和Session二者的机制. 问题1:为什么我们在浏览网页的时候,会发现它会自动的给你推送一些内容,推送的这些内容并不是随机的, 是一些与我们之前浏览过的网页相关的这些内容,它是如何做到的了? 核心知识点: Cookie和Session都可以用来保存信息,比如注册信息.浏览记录等, 只是二者储层的地点不同,行使的功能可以说是类似的,许多

形象地理解Cookie和Session

Cookie和Session的形象理解 通过实际生活中的银行卡来理解Cookie和Session间的关系: Cookie相当于银行卡 Session相当于银行账户 结合到银行存钱和取钱的过程来理解: 存钱过程 1. 兴高采烈地到银行柜台,把要存的钱交给银行工作人员: 2. 银行工作人员把钱存好后,给你一张银行卡. 取钱过程 1. 需要用钱了,找到最近的ATM机,插入银行卡,输入密码: 2. ATM机验证密码正确后,就可以取出钱啦! 类比存钱的过程,client(你)的请求到达server(银行)

理解Cookie和Session机制

转自:http://my.oschina.net/xianggao/blog/395675 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. Cookie机制 Cookie技术是客户端的解决方案,Cooki

理解Cookie和Session机制(转)

目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie的有效期 Cookie的修改.删除 Cookie的域名 Cookie的路径 Cookie的安全属性 JavaScript操作Cookie 案例:永久登录 Session机制 什么是Session 实现用户登录 Session的生命周期 Session的有效期 Session的常用方法 Session

正确理解cookie和session机制原理

php中cookie和session是我们常用的两个变量了,一个是用户客户端的,一个用在服务器的但他们的区别与工作原理怎么样,下面我们一起来看看cookie和session机制原理吧. cookie和session机制之间的区别和联系 具体来说cookie机制采用的是在客户端保持状态的方案.它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持.cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力. 而session机制采用的是一种在客户端与服务器之间保持状态的解决

深入理解cookie和session

cookie和session在java web开发中扮演了十分重要的作用,本篇文章对其中的重要知识点做一些探究和总结.(转发自https://www.cnblogs.com/roy-blog/p/8250519.html) 1.cookie存在于浏览器 随意打开一个网址,用火狐的调试工具,随意选取一个链接,查看其请求头.你就会看到cookie的信息.如下图所示. 如上图所示,我们访问了新浪网,通过火狐浏览器的调试窗口可以看到cookie存在于请求头也就是httprequest中,并且是以键值对(

理解cookie和session

cookie:一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据. session:就是服务器内存的一个key-value的数据结构,一个用户独有一个,怎么区别呢,就是由cookie的sessionid来保存区别用户的ID啦. cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式. cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端. co

深入理解cookie与session

cookie和session是web开发比较基础也比较重要的知识,cookie和session用于用户的状态管理.简单的来说它们都只是http中的一个配置项,在Servlet规范中也只对应一个类而已:http对cookie的数量和大小有限制,而session不易于在很多的服务器中进行共享. Session与Cookie的作用都是为了保持访问用户与后端服务器的交互状态.他们有各自的优点和缺陷.但一个服务器访问量很大的时候,比如一天又几亿个pv,假如每个cookie占用200个字节,那么它需要多少带