美文网首页
2018-12-05 cookie和session

2018-12-05 cookie和session

作者: 其实_dnhl | 来源:发表于2018-12-06 09:02 被阅读8次

    cookie和session有什么区别?

    cookie:存储于客户端 安全级别低 存储量有限 一般不超过4k
    session:存在服务器端 安全性较高 存储空间大 但是内存占用量也大,而且session不能独立存在,必须依赖cookie

    flask中cookie和session介绍

    一、cookie:
    在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。
    
    二、session:
    session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。
    
    三、cookie和session结合使用:
    web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:
    
    1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。
    
    2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。
    

    localStorage和sessionStorage区别

    localStorage和sessionStorage一样都是用来存储客户端临时信息的对象。
    
    他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现)。
    
    localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。
    
    sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
    
    不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标 签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。
    
    同源的判断规则:
    
    http://www.test.com
    
    https://www.test.com (不同源,因为协议不同)
    
    http://my.test.com(不同源,因为主机名不同)
    
    http://www.test.com:8080(不同源,因为端口不同)
    
    localStorage和sessionStorage使用时使用相同的API:
    
    localStorage.setItem("key","value");//以“key”为名称存储一个值“value”
    
    localStorage.getItem("key");//获取名称为“key”的值
    
    枚举localStorage的方法:
    
    for(var i=0;i<localStorage.length;i++){
    
         var name = localStorage.key(i)​;
    
         var value = localStorage.getItem(name);​
    
    }
    
    删除localStorage中存储信息的方法:
    
    localStorage.removeItem("key");//删除名称为“key”的信息。
    
    localStorage.clear();​//清空localStorage中所有信息
    
     通过getItem或直接使用localStorage["key"]获取到的信息均为实际存储的副本。
    
    例如:
    
    localStorage.key = {value1:"value1"}​;
    
    localStorage.key.value1='a'​;
    
    这里是无法​对实际存储的值产生作用的,下面的写法也不可以:
    
    ​localStorage.getItem("key").value1="a";ss
    

    相关文章

      网友评论

          本文标题:2018-12-05 cookie和session

          本文链接:https://www.haomeiwen.com/subject/zztwcqtx.html