美文网首页
2019-07-18 cookie和session

2019-07-18 cookie和session

作者: 北子萌 | 来源:发表于2019-08-02 13:55 被阅读0次

    一、Cookie

    1.存储在客户端,因为可以随意伪造,因此并不安全。

    2.http是无状态的,不能每次打开链接都需要输入密码和用户名,为了能够分辨链接由谁来发起的,因此提出了cookie的机制

    3. Cookie的主要内容包括:名字、值、过期时间、路径和域

    二、Session

    1.存储在服务器端的一种Key vlaue结构

    2.浏览器第一次发来请求的时候,服务器自动生成了一HashTable和一Session ID来唯一标识这个HashTable,并将其通过响应发送到浏览器。浏览器第二次发送请求会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。

    3.由于服务器存储session需要资源占用,因此会设置一个时间限制,超过了这个时间限制就毁掉这个值

    三、区别

    存储数据量方面:session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象

    一个在客户端一个在服务端。因Cookie在客户端所以可以编辑伪造,不是十分安全。

    Cookie限制了数据量大小为4k,session没有限制

    Session过多时会消耗服务器资源,大型网站会有专门Session服务器,Cookie存在客户端没问题。

    域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com的Session在api.a.com下都不能用,解决这个问题的办法是JSONP或者跨域资源共享。

    四、二者的结合使用

    1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。

    2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。

    相关文章

      网友评论

          本文标题:2019-07-18 cookie和session

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