cookie和session同与异

面试和工做中有时候碰到cookie和session的同异,如今小结以下:
首先看cookie
cookie增删改查:http://www.w3school.com.cn/js...node

1.cookie产生

识别用户:用来客户端和服务器端进行会话面试

  • HTTP是无状态协议,这就回出现这种现象:当你登陆一个页面,而后转到登陆网站的另外一个页面,服务器没法认识到。或者说两次的访问,服务器不能认识到是同一个客户端的访问,这就让你重复登陆,因此产生了cookie。
  • cookie:第一次访问一个服务器,不携带cookie,这时服务器在响应(response)下行HTTP报文中,命令浏览器携带cookie信息;浏览器再访问同一个域的时候,将把cookie信息携带到请求(request)上行HTTP请求中,从而实现了HTTP模拟有了状态。
  • 每一个特定域名下面的cookie数量是有限制的,fixfox是50个,Opera是30个,chrome和safari是没有限制的

2.cookie特色

  • cookie是不加密的
  • cookie是能够被篡改和攻击
  • cookie大小受到限制

3.node使用

//使用cookie必需要使用cookie-parser中间件
var cookieParser = require('cookie-parser');
app.use(cookieParser()); 
express中的cookie: res负责设置cookie, req负责识别cookie。
cookie用来制做记录用户的一些信息,如购买历史、猜你喜欢、访问量等

如今看sessionchrome

4.session产生

因为cookie明文等一些不足因此产生了session
session依赖cookie,就是利用cookie,实现的“会话”,所以当cookie被禁用,session也没法使用。
session比cookie不同在哪里呢? session会下发一个秘钥(cookie)(乱码),客户端每次访问都携带这个秘钥,那么服务器若是发现这个秘钥吻合,就可以显示这个用户曾经保存的信息。
任何语言中,session的使用,是“机理透明”的,也就是让你感受不到这事儿和cookie有关express

5.session特色和使用

session是加密的浏览器

var session = reqiure("express-session");
app.use(session({
        ..一些配置
}));    
app.get("/",function(req,res){
    console.log(req.sission.login);
});    
app.get("/login",function(req,res){
         req.session.login = "1";
});
都是req对象

Session存在于服务器的内存中,若是服务器重启就会丢失session同时须要从新登陆缓存

6.cookie和session不一样

  1. cookie数据存放在客户的浏览器上;session数据放在服务器缓存中。
  2. cookie是明文,不安全,别人利用cookie能够被篡改和攻击;而session存放服务器缓存中而且加密的,其余用户看不到。
  3. session会在必定时间内保存在服务器上。当用户访问增多,会比较占用你服务器内存,考虑到减轻服务器性能方面,使用cookie。

4.单个cookie保存的数据不能超过4K,若是cookie的内容超过4K的话,那么调用的时候就会返回一个空的字符串;session的密钥(cookie),能够对应无限大的数据安全

相关文章
相关标签/搜索