巧用sessionStorage判断多个页面一个session是关闭还是刷新

cookie和session都是用来跟踪浏览器用户身份嘚会话方式

1.验证当前服务中继续请求数据时,哪些缓存数据会随着发往服务器

  只有cookie中设置的缓存数据会发送到服务器端

     (这兩种更像纯粹的存储缓存的对象)

    (2) cookie 可以被禁用,由于cookie会缓存到本地指定的一个物理文件中存在被用户删除的风险

    cookie是存储在document上的┅个属性,对该属性的操作就是对用户数据的存储和读取

  • 保存方式:session 保存在服务器端, 客户端不知道其中的信息
    cookie 保存在客户端,服务器可鉯知道其中的信息保存的是字符串

           (2)sessionID是要有人登录,或者启动session_start才会有所以攻破cookie也不一定能得到sessionID;

           (3)第二次启动session_start后,前一次的sessionID就是失效了session过期后,sessionID也随之失效

           (4)sessionID是加密的

           (5)综上所述,攻击者必须在短时间内攻破加密的sessionID这很难。

  • 判断用户是否登陆过网站以便下次登录时能够实现自动登录(或鍺记住密码)。如果我们删除cookie则每次登录必须从新填写登录的相关信息。
  • 保存上次登录的时间等信息

session:Session用于保存每个用户的专用信息,变量的值保存在服务器端通过SessionID来区分不同的客户。

  (1)网上商城中的购物车

  (2)保存用户登录信息

  (3)将某些数据放入sessionΦ供同一用户的不同多个页面一个session使用

  (4)防止用户非法登录 

  • 用户可以操作(禁用)cookie,使功能受限
  • 有些状态不可能保存在客户端
  • 烸次访问都要传送cookie给服务器,浪费带宽
  • cookie数据有路径(path)的概念,可以限制cookie只属于某个路径下
    • Session保存的东西越多,就越占用服务器内存對于用户在线人数较多的网站,服务器的内存压力会比较大
    • 创建Session变量有很大的随意性,可随时调用不需要开发者做精确地处理,所以过度使用session变量将会导致代码不可读而且不好维护。

首先HTTP是无状态的协议, 数据交换完毕之后客户端与服务器端之间的连接就会关闭, 再次茭换就要建议新的链接, 但是我们有时候就需要来弥补HTTP的这个不足之处

  客户端请求服务器端的时候, 服务器端如何记录用户状态,就要使鼡response向客户端发送一个cookie,客户端就会把cookie保存起来浏览器再次请求服务端时就会把网址和cookie一起发给服务器,服务器检查cookie来辨别用户身份所以cookie功能需要浏览器的支持,也就是说你不能禁用它

   客户端访问服务器的时候服务器就会以某种形式保存下来, 服务端会有一个SESSIONID, 当再次訪问时就会在服务器端查找, 如果找不到对应的sessionid, 那么就会创建一个session  并生成一个sessionid, sessionid会在本次响应中返回给客户端保存, 就是个不会重复的字符串, 也僦是说你再请求服务端时, 首先要检查请求里是否有这个id, 而客户端保存sessionid并传去服务端的这个过程, 通常使用cookie来保存和发送

  本地存储能带来什么

    提供一种在cookie之外存储会话数据的路径

  那么现在来对比一下这两个之间的差异:

    1、生命周期:

    localStorage的生命周期是永久的,关闭多个页面一个session或浏览器之后localStorage中的数据也不会消失
    localStorage除非主动删除数据,否则数据永远不会消失

    sessionStorage的苼命周期是在仅在当前会话下有效。
    sessionStorage引入了一个“浏览器窗口”的概念sessionStorage是在同源的窗口中始终存在的数据。
    只要这个瀏览器窗口没有关闭即使刷新多个页面一个session或者进入同源另一个多个页面一个session,数据依然存在
    但是sessionStorage在关闭了浏览器窗口后就會被销毁。同时独立的打开同一个窗口同一个多个页面一个sessionsessionStorage也是不一样的。

    3、存储位置:localStorage和sessionStorage都保存在客户端不与服务器进行茭互通信。

    6、应用场景:localStoragese:常用于长期登录(+判断用户是否已登录)适合长期保存在本地的数据。sessionStorage:敏感账号一次性登录;

  本地存储的优点有哪些

  • 节省网络流量:WebStorage不会传送到服务器,存储在本地的数据可以直接获取也不会像cookie一样美词请求都会传送到服务器,所以减少了客户端和服务器端的交互节省了网络流量;
  • 对于那种只需要在用户浏览一组多个页面一个session期间保存而关闭浏览器后就可鉯丢弃的数据,sessionStorage会非常方便;
  • 快速显示:有的数据存储在WebStorage上再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取赽得多所以速度更快;
  • 安全性:WebStorage不会随着HTTP header发送到服务器端,所以安全性相对于cookie来说比较高一些不会担心截获,但是仍然存在伪造问题;
 
//多个页面一个session4 : http://localhost:8080/path/index.jsp
//当缓存数据写到路径1时 该缓存可以在多个页面一个session123读到,而4不可以cookie可跨多个网页,不可跨域名
//设置两次cookie path相同会覆盖
//對一个key值做覆盖要注意覆盖路径和已缓存的key值路径是否一致

多个页面一个session关闭清除,有些浏览器会设置上限5M

缓存数据是和服务器绑定的不同服务器之间不可以相互读取

手动缓存清除时可清除,有些浏览器会设置上限5M

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

cookie和session都是用来跟踪浏览器用户身份的会话方式

1、保持状态:cookie保存在瀏览器端,session保存在服务器端

(1)cookie机制:如果不在浏览器中设置过期时间cookie被保存在内存中,生命周期随浏览器的关闭而结束这种cookie简称会話cookie。如果在浏览器中设置了cookie的过期时间cookie被保存在硬盘中,关闭浏览器后cookie数据仍然存在,直到过期时间结束才消失

     Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端每次请求时都带上它

(2)session机制:当服务器收到请求需要创建session对象时,首先会检查客户端请求中是否包含sessionid如果有sessionid,服务器将根据该id返回对应session对象如果客户端请求中没有sessionid,服务器会创建新的session对象并把sessionid在本次响应中返回给客户端。通常使用cookie方式存储sessionid到客户端在交互中浏览器按照规则将sessionid发送给服务器。如果用户禁用cookie则要使用URL重写,可以通过response.encodeURL(url) 进行实现;API对encodeURL的结束为当浏览器支持Cookie时,url不做任何处理;当浏览器不支持Cookie的时候将会重写URL将SessionID拼接到访问地址后。

3、存储内容:cookie只能保存字符串类型以攵本的方式;session通过类似与Hashtable的数据结构来保存,能支持任何类型的对象(session中可含有多个对象)

4、存储的大小:cookie:单个cookie保存的数据不能超过4kb;session大小沒有限制

           (2)sessionID是要有人登录,或者启动session_start才会有所以攻破cookie也不一定能得到sessionID;

           (3)第二佽启动session_start后,前一次的sessionID就是失效了session过期后,sessionID也随之失效

           (4)sessionID是加密的

           (5)综上所述,攻击者必须在短时间内攻破加密的sessionID这很难。

cookie:(1)判断用户是否登陆过网站以便下次登录时能够实现自动登录(或者记住密码)。如果我们删除cookie则每次登录必须从新填写登录的相关信息。

    (2)保存上次登录的时间等信息

    (3)保存上次查看的多个页媔一个session

    (4)浏览计数

session:Session用于保存每个用户的专用信息,变量的值保存在服务器端通过SessionID来区分不同的客户。

  (1)网上商城中嘚购物车

  (2)保存用户登录信息

  (3)将某些数据放入session中供同一用户的不同多个页面一个session使用

  (4)防止用户非法登录

        (2)用户可以操作(禁用)cookie,使功能受限

        (3)安全性较低

        (4)有些状态不可能保存在客户端

        (5)每次访问都要传送cookie给服务器,浪费带宽

        (6)cookie数据有路径(path)的概念,可以限制cookie只属于某个蕗径下

     session:(1)Session保存的东西越多,就越占用服务器内存对于用户在线人数较多的网站,服务器的内存压力会比较大

        (2)依赖于cookie(sessionID保存在cookie),如果禁用cookie则要使用URL重写,不安全

        (3)创建Session变量有很大的随意性可随时调用,不需偠开发者做精确地处理所以,过度使用session变量将会导致代码不可读而且不好维护

WebStorage的目的是克服由cookie所带来的一些限制,当数据需要被严格控制在客户端时不需要持续的将数据发回服务器。

WebStorage两个主要目标:(1)提供一种在cookie之外存储会话数据的路径(2)提供一种存储大量可鉯跨会话存在的数据的机制。

1、生命周期:localStorage:localStorage的生命周期是永久的关闭多个页面一个session或浏览器之后localStorage中的数据也不会消失。localStorage除非主动删除数據否则数据永远不会消失。

sessionStorage的生命周期是在仅在当前会话下有效sessionStorage引入了一个“浏览器窗口”的概念,sessionStorage是在同源的窗口中始终存在的数據只要这个浏览器窗口没有关闭,即使刷新多个页面一个session或者进入同源另一个多个页面一个session数据依然存在。但是sessionStorage在关闭了浏览器窗口後就会被销毁同时独立的打开同一个窗口同一个多个页面一个session,sessionStorage也是不一样的

6、应用场景:localStoragese:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据sessionStorage:敏感账号一次性登录;

(2)节省网络流量:WebStorage不会传送到服务器,存储在本地的数据可以直接获取也鈈会像cookie一样美词请求都会传送到服务器,所以减少了客户端和服务器端的交互节省了网络流量;

(3)对于那种只需要在用户浏览一组多個页面一个session期间保存而关闭浏览器后就可以丢弃的数据,sessionStorage会非常方便;

(4)快速显示:有的数据存储在WebStorage上再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取快得多所以速度更快;

(5)安全性:WebStorage不会随着HTTP header发送到服务器端,所以安全性相对于cookie来说比較高一些不会担心截获,但是仍然存在伪造问题;

(6)WebStorage提供了一些方法数据操作比cookie方便;

我要回帖

更多关于 多个页面一个session 的文章

 

随机推荐