Express 中 cookie 的使用

 

 

 

Express Cookie的使用

Cookie 简介

cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据。

 

HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。

 

Cookie 是一个简单到爆的想法:当访问一个页面的时候,服务器在下行 HTTP 报文中, 命令浏览器存储一个字符串; 浏览器再访问同一个域的时候,将把这个字符串携带到上行 HTTP 请求中。第一次访问一个服务器,不可能携带 cookie。 必须是服务器得到这次请求, 在下行响应报头中,携带 cookie 信息,此后每一次浏览器往这个服务器发出的请求,都会携带这个 cookie。

 

Cookie 特点

●cookie 保存在浏览器本地 

● 正常设置的 cookie 是不加密的,用户可以自由看到; 

● 用户可以删除 cookie,或者禁用它 

● cookie 可以被篡改 

● cookie 可以用于攻击 

● cookie 存储量很小。未来实际上要被 localStorage 替代,但是后者 IE9 兼容。

 

Cookie 的使用

1.安装

 

cnpm instlal cookie-parser --save  

 

2.引入

 

    var cookieParser = require('cookie-parser');  

 

3.设置中间件

 

  app.use(cookieParser());  

 

4.设置 cookie

 

   res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});  

   //HttpOnly 默认 false 不允许 客户端脚本访问 

 

5.获取 cookie

 

     req.cookies.name 

 

 

 

属性说明:

 

domain: 域名  

 

name=value:键值对,可以设置要保存的 Key/Value,注意这里的 name 不能和其他属性项的名字一样     Expires: 过期时间(秒),在设置的某个时间点后该 Cookie 就会失效,如 expires=Wednesday, 

09-Nov-99 23:12:40 GMT   

 

maxAge: 最大失效时间(毫秒),设置在多少后失效     

 

secure: 当 secure 值为 true 时,cookie 在 HTTP 中是无效,在 HTTPS 中才有效 

 

Path: 表示 cookie 影响到的路,如 path=/。如果路径不能匹配时,浏览器则不发送这个 Cookie

 

httpOnly:是微软对 COOKIE 做的扩展。如果在 COOKIE 中设置了“httpOnly”属性,则通过程序(JS 脚本、applet 等)将无法读取到COOKIE 信息,防止 XSS 攻击产生 

 

singed:表示是否签名cookie, 设为true 会对这个 cookie 签名,这样就需要用 res.signedCookies 而不是 res.cookies 访问它。被篡改的签名 cookie 会被服务器拒绝,并且 cookie 值会重置为它的原始值

 

domain属性使用demo:

 

    /*

 

    cookie-parser可以设置和获取cookie

 

    1.安装   cnpm instlal cookie-parser --save

 

    2.引入var cookieParser = require('cookie-parser');

 

    3.设置中间件

 

     app.use(cookieParser());

 

    4.设置cookie

 

     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});

 

     //HttpOnly 默认false不允许 客户端脚本访问

 

    5.获取cookie

 

     req.cookies.name

 

 

 

    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的

 

 

 

    baidu.com  域名

 

 

    news.baidu.com

    www.baidu.com

 

 

 

    aaa.com

 

    news.aaa.com

 

    www.aaa.com

 

    //domain:'.aaa.com' 多个二级域名共享cookie

 

    * */

 

    var express  = require('express');

 

    var cookieParser = require('cookie-parser');

 

    var app = express();

 

    app.use(cookieParser());

 

 

 

    app.get("/",function(req,res){

 

        console.log(req.cookies);

        res.send("你好nodejs");

    });

 

    app.get("/news",function(req,res){

 

        console.log(req.cookies);

        res.send("你好nodejs  news");

    });

 

    app.get("/set",function(req,res){

 

 

        //参数1:名字

        //参数2:cookie的值

        //参数3:cookie的配置信息

        res.cookie('username','cookie的值111',{maxAge:600000,domain:'.aaa.com'});

 

 

 

        res.send("设置cookie成功");

    });

 

 

    app.listen(3001,'127.0.0.1');

 

 

path属性使用demo:

 

 

    /*

 

    cookie-parser可以设置和获取cookie

 

    1.安装   cnpm instlal cookie-parser --save

 

    2.引入var cookieParser = require('cookie-parser');

 

    3.设置中间件

 

     app.use(cookieParser());

 

    4.设置cookie

 

     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});

 

     //HttpOnly 默认false不允许 客户端脚本访问

 

    5.获取cookie

 

     req.cookies.name

 

 

 

    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的

 

 

 

    baidu.com  域名

 

 

    news.baidu.com

    www.baidu.com

 

 

 

    aaa.com

 

    news.aaa.com

 

    www.aaa.com

 

     domain:'.aaa.com' 多个二级域名共享cookie

 

 

 

     path  表示在哪个路由下面可以访问cookie

 

 

 

     httpOnly:true 设置为true,表示只有在nodejs服务端可以操作cookie ,没法用js脚本语言操作cookie

 

    * */

 

    var express  = require('express');

 

    var cookieParser = require('cookie-parser');

 

    var app = express();

 

    app.use(cookieParser());

 

 

 

    app.get("/",function(req,res){

 

        console.log(req.cookies);

        res.send("你好nodejs");

    });

 

    app.get("/news",function(req,res){

 

        console.log(req.cookies);

        res.send("你好nodejs  news");

    });

 

    app.get("/set",function(req,res){

 

 

        //参数1:名字

        //参数2:cookie的值

        //参数3:cookie的配置信息

        res.cookie('userinfo','cookie111',{maxAge:600000,path:'/news',httpOnly:true});

 

 

 

        res.send("设置cookie成功");

    });

 

 

    app.listen(3001,'127.0.0.1');

 

设置 cookie

res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) 

 

res.cookie('name', 'tobi', { domain: '.example.com', path: '/admin', secure: true }); 

 

res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); 

 

获取 cookie

    req.cookies.name 

1

设置并获取cookie的demo:

 

/*

 

    cookie-parser可以设置和获取cookie

 

    1.安装   cnpm instlal cookie-parser --save

 

    2.引入var cookieParser = require('cookie-parser');

 

    3.设置中间件

 

     app.use(cookieParser());

 

    4.设置cookie

 

     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});

 

     //HttpOnly 默认false不允许 客户端脚本访问

 

    5.获取cookie

 

     req.cookies.name

 

 

    * */

 

    var express  = require('express');

 

    var cookieParser = require('cookie-parser');

 

    var app = express();

 

    app.use(cookieParser());

 

 

 

    app.get("/",function(req,res){

 

        console.log(req.cookies);

        res.send("你好nodejs");

    });

 

    app.get("/news",function(req,res){

 

        console.log(req.cookies);

        res.send("你好nodejs  news");

    });

 

    app.get("/set",function(req,res){

 

 

        //参数1:名字

        //参数2:cookie的值

        //参数3:cookie的配置信息

        res.cookie('username','cookie的值',{maxAge:60000});

 

 

 

        res.send("设置cookie成功");

    });

 

 

    app.listen(3001,'127.0.0.1');

 

删除 cookie

    res.cookie('rememberme', '', { expires: new Date(0)}); 

 

    res.cookie('username','zhangsan',{domain:'.ccc.com',maxAge:0,httpOnly:true}); 

 

加密 Cookie

1.配置中间件的时候需要传参

 

    var cookieParser = require('cookie-parser');  

    app.use(cookieParser('123456'));  

 

2.设置 cookie 的时候配置 signed 属性

 

res.cookie('userinfo','hahaha',{domain:'.ccc.com',maxAge:900000,httpOnly:true,signed:true}); 

1

3.signedCookies 调用设置的 cookie

 

    console.log(req.signedCookies);   

 

demo:

 

    /*

 

    cookie-parser可以设置和获取cookie

 

    1.安装   cnpm instlal cookie-parser --save

 

    2.引入var cookieParser = require('cookie-parser');

 

    3.设置中间件

 

     app.use(cookieParser());

 

    4.设置cookie

 

     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});

 

     //HttpOnly 默认false不允许 客户端脚本访问

 

    5.获取cookie

 

     req.cookies.name

 

 

 

    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的

 

 

 

 

 

    aaa.com

 

        news.aaa.com

 

        www.aaa.com

 

 

        maxAge  过期时间

 

        domain:'.aaa.com' 多个二级域名共享cookie

 

        path  表示在哪个路由下面可以访问cookie

 

        httpOnly:true 设置为true,表示只有在nodejs服务端可以操作cookie ,没法用js脚本语言操作cookie

 

        signed属性设置成true 表示加密cookie信息

 

 

      让用户看不到cookie明文信息

 

 

      1.保存的时候加密

 

      2.cookie-parser里面  signed属性设置成true

 

 

 

 

 

    cookie的加密:

 

 

    1.参数表示加密的随机字符串

     app.use(cookieParser('sign'));

 

    2.设置

     res.cookie('userinfo','cookie222_info',{maxAge:600000,signed:true});

 

 

    3.使用  获取

 

     req.signedCookies

 

    * */

 

    var express  = require('express');

 

    var cookieParser = require('cookie-parser');

 

    var app = express();

 

    app.use(cookieParser('sign'));

 

 

    app.get("/",function(req,res){

 

        //console.log(req.cookies);

 

        console.log(req.signedCookies);   /*获取加密的cookie信息*/

        res.send("你好nodejs");

    });

    app.get("/set",function(req,res){

 

 

        //参数1:名字

        //参数2:cookie的值

        //参数3:cookie的配置信息

        res.cookie('userinfo','cookie222_info',{maxAge:600000,signed:true});

        res.send("设置cookie成功");

 

    });

 

 

    app.listen(3001,'127.0.0.1');

 

Cookie 的应用

查看浏览过的城市:

 

 

    /*

    * cookie-parser可以设置和获取cookie

 

 

    1.安装   cnpm instlal cookie-parser --save

 

    2.引入var cookieParser = require('cookie-parser');

 

 

    3.配置中间件

 

    app.use(cookieParser());

 

    4.设置cookie

 

     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});

 

     //HttpOnly 默认false不允许 客户端脚本访问

 

 

    5.获取cookie

 

     req.cookies.name

 

    *

    * */

 

    var express  = require('express');

    var cookieParser = require('cookie-parser');

    var app = express();

 

    app.use(cookieParser());

 

    app.get("/",function(req,res){

 

 

        res.send("您浏览过的城市-"+req.cookies.citys);

    });

 

    /*您浏览过的城市  /lvyou?city=北京  /lvyou?city=上海    /lvyou?city=杭州    /lvyou?city=重庆 */

 

    app.get("/lvyou",function(req,res){

 

        //写入数据要做判断

 

        var city=req.query.city;  /*获取当前城市*/

 

        var citys=req.cookies.citys;  /*数组  获取所有的城市*/

 

        if(citys){

 

            citys.push(city)

        }else{

 

            citys=[];  /*没有浏览过任何城市的话 citys改为数组 */

 

            citys.push(city)

        }

 

        res.cookie('citys',citys,{maxAge:60*1000*10});

 

        res.send("您浏览的城市是"+city);

    });

 

    app.listen(3001);

 

Express Cookie的使用Cookie 简介cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据。
HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。
Cookie 是一个简单到爆的想法:当访问一个页面的时候,服务器在下行 HTTP 报文中, 命令浏览器存储一个字符串; 浏览器再访问同一个域的时候,将把这个字符串携带到上行 HTTP 请求中。第一次访问一个服务器,不可能携带 cookie。 必须是服务器得到这次请求, 在下行响应报头中,携带 cookie 信息,此后每一次浏览器往这个服务器发出的请求,都会携带这个 cookie。
Cookie 特点●cookie 保存在浏览器本地 ● 正常设置的 cookie 是不加密的,用户可以自由看到; ● 用户可以删除 cookie,或者禁用它 ● cookie 可以被篡改 ● cookie 可以用于攻击 ● cookie 存储量很小。未来实际上要被 localStorage 替代,但是后者 IE9 兼容。
Cookie 的使用1.安装
cnpm instlal cookie-parser --save  12.引入
    var cookieParser = require('cookie-parser');  13.设置中间件
  app.use(cookieParser());  14.设置 cookie
   res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});     //HttpOnly 默认 false 不允许 客户端脚本访问 125.获取 cookie
     req.cookies.name 1

属性说明:
domain: 域名  
name=value:键值对,可以设置要保存的 Key/Value,注意这里的 name 不能和其他属性项的名字一样     Expires: 过期时间(秒),在设置的某个时间点后该 Cookie 就会失效,如 expires=Wednesday, 09-Nov-99 23:12:40 GMT   
maxAge: 最大失效时间(毫秒),设置在多少后失效     
secure: 当 secure 值为 true 时,cookie 在 HTTP 中是无效,在 HTTPS 中才有效 
Path: 表示 cookie 影响到的路,如 path=/。如果路径不能匹配时,浏览器则不发送这个 Cookie
httpOnly:是微软对 COOKIE 做的扩展。如果在 COOKIE 中设置了“httpOnly”属性,则通过程序(JS 脚本、applet 等)将无法读取到COOKIE 信息,防止 XSS 攻击产生 
singed:表示是否签名cookie, 设为true 会对这个 cookie 签名,这样就需要用 res.signedCookies 而不是 res.cookies 访问它。被篡改的签名 cookie 会被服务器拒绝,并且 cookie 值会重置为它的原始值1234567891011121314domain属性使用demo:
    /*
    cookie-parser可以设置和获取cookie
    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');
    3.设置中间件
     app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问
    5.获取cookie
     req.cookies.name


    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的


    baidu.com  域名

    news.baidu.com    www.baidu.com


    aaa.com
    news.aaa.com
    www.aaa.com
    //domain:'.aaa.com' 多个二级域名共享cookie
    * */
    var express  = require('express');
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser());


    app.get("/",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs");    });
    app.get("/news",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs  news");    });
    app.get("/set",function(req,res){

        //参数1:名字        //参数2:cookie的值        //参数3:cookie的配置信息        res.cookie('username','cookie的值111',{maxAge:600000,domain:'.aaa.com'});


        res.send("设置cookie成功");    });

    app.listen(3001,'127.0.0.1');

path属性使用demo:

    /*
    cookie-parser可以设置和获取cookie
    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');
    3.设置中间件
     app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问
    5.获取cookie
     req.cookies.name


    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的


    baidu.com  域名

    news.baidu.com    www.baidu.com


    aaa.com
    news.aaa.com
    www.aaa.com
     domain:'.aaa.com' 多个二级域名共享cookie


     path  表示在哪个路由下面可以访问cookie


     httpOnly:true 设置为true,表示只有在nodejs服务端可以操作cookie ,没法用js脚本语言操作cookie
    * */
    var express  = require('express');
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser());


    app.get("/",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs");    });
    app.get("/news",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs  news");    });
    app.get("/set",function(req,res){

        //参数1:名字        //参数2:cookie的值        //参数3:cookie的配置信息        res.cookie('userinfo','cookie111',{maxAge:600000,path:'/news',httpOnly:true});


        res.send("设置cookie成功");    });

    app.listen(3001,'127.0.0.1');123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179设置 cookieres.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) 
res.cookie('name', 'tobi', { domain: '.example.com', path: '/admin', secure: true }); 
res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); 12345获取 cookie    req.cookies.name 1设置并获取cookie的demo:
/*
    cookie-parser可以设置和获取cookie
    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');
    3.设置中间件
     app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问
    5.获取cookie
     req.cookies.name

    * */
    var express  = require('express');
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser());


    app.get("/",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs");    });
    app.get("/news",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs  news");    });
    app.get("/set",function(req,res){

        //参数1:名字        //参数2:cookie的值        //参数3:cookie的配置信息        res.cookie('username','cookie的值',{maxAge:60000});


        res.send("设置cookie成功");    });

    app.listen(3001,'127.0.0.1');1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162删除 cookie    res.cookie('rememberme', '', { expires: new Date(0)}); 
    res.cookie('username','zhangsan',{domain:'.ccc.com',maxAge:0,httpOnly:true}); 123加密 Cookie1.配置中间件的时候需要传参
    var cookieParser = require('cookie-parser');      app.use(cookieParser('123456'));  122.设置 cookie 的时候配置 signed 属性
res.cookie('userinfo','hahaha',{domain:'.ccc.com',maxAge:900000,httpOnly:true,signed:true}); 13.signedCookies 调用设置的 cookie
    console.log(req.signedCookies);   1demo:
    /*
    cookie-parser可以设置和获取cookie
    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');
    3.设置中间件
     app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问
    5.获取cookie
     req.cookies.name


    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的




    aaa.com
        news.aaa.com
        www.aaa.com

        maxAge  过期时间
        domain:'.aaa.com' 多个二级域名共享cookie
        path  表示在哪个路由下面可以访问cookie
        httpOnly:true 设置为true,表示只有在nodejs服务端可以操作cookie ,没法用js脚本语言操作cookie
        signed属性设置成true 表示加密cookie信息

      让用户看不到cookie明文信息

      1.保存的时候加密
      2.cookie-parser里面  signed属性设置成true




    cookie的加密:

    1.参数表示加密的随机字符串     app.use(cookieParser('sign'));
    2.设置     res.cookie('userinfo','cookie222_info',{maxAge:600000,signed:true});

    3.使用  获取
     req.signedCookies
    * */
    var express  = require('express');
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser('sign'));

    app.get("/",function(req,res){
        //console.log(req.cookies);
        console.log(req.signedCookies);   /*获取加密的cookie信息*/        res.send("你好nodejs");    });    app.get("/set",function(req,res){

        //参数1:名字        //参数2:cookie的值        //参数3:cookie的配置信息        res.cookie('userinfo','cookie222_info',{maxAge:600000,signed:true});        res.send("设置cookie成功");
    });

    app.listen(3001,'127.0.0.1');123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104Cookie 的应用查看浏览过的城市:

    /*    * cookie-parser可以设置和获取cookie

    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');

    3.配置中间件
    app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问

    5.获取cookie
     req.cookies.name
    *    * */
    var express  = require('express');    var cookieParser = require('cookie-parser');    var app = express();
    app.use(cookieParser());
    app.get("/",function(req,res){

        res.send("您浏览过的城市-"+req.cookies.citys);    });
    /*您浏览过的城市  /lvyou?city=北京  /lvyou?city=上海    /lvyou?city=杭州    /lvyou?city=重庆 */
    app.get("/lvyou",function(req,res){
        //写入数据要做判断
        var city=req.query.city;  /*获取当前城市*/
        var citys=req.cookies.citys;  /*数组  获取所有的城市*/
        if(citys){
            citys.push(city)        }else{
            citys=[];  /*没有浏览过任何城市的话 citys改为数组 */
            citys.push(city)        }
        res.cookie('citys',citys,{maxAge:60*1000*10});
        res.send("您浏览的城市是"+city);    });
    app.listen(3001);--------------------- 作者:c. 来源:CSDN 原文:https://blog.csdn.net/cckevincyh/article/details/79815666 版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

 

Express Cookie的使用Cookie 简介cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据。
HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。
Cookie 是一个简单到爆的想法:当访问一个页面的时候,服务器在下行 HTTP 报文中, 命令浏览器存储一个字符串; 浏览器再访问同一个域的时候,将把这个字符串携带到上行 HTTP 请求中。第一次访问一个服务器,不可能携带 cookie。 必须是服务器得到这次请求, 在下行响应报头中,携带 cookie 信息,此后每一次浏览器往这个服务器发出的请求,都会携带这个 cookie。
Cookie 特点●cookie 保存在浏览器本地 ● 正常设置的 cookie 是不加密的,用户可以自由看到; ● 用户可以删除 cookie,或者禁用它 ● cookie 可以被篡改 ● cookie 可以用于攻击 ● cookie 存储量很小。未来实际上要被 localStorage 替代,但是后者 IE9 兼容。
Cookie 的使用1.安装
cnpm instlal cookie-parser --save  12.引入
    var cookieParser = require('cookie-parser');  13.设置中间件
  app.use(cookieParser());  14.设置 cookie
   res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});     //HttpOnly 默认 false 不允许 客户端脚本访问 125.获取 cookie
     req.cookies.name 1

属性说明:
domain: 域名  
name=value:键值对,可以设置要保存的 Key/Value,注意这里的 name 不能和其他属性项的名字一样     Expires: 过期时间(秒),在设置的某个时间点后该 Cookie 就会失效,如 expires=Wednesday, 09-Nov-99 23:12:40 GMT   
maxAge: 最大失效时间(毫秒),设置在多少后失效     
secure: 当 secure 值为 true 时,cookie 在 HTTP 中是无效,在 HTTPS 中才有效 
Path: 表示 cookie 影响到的路,如 path=/。如果路径不能匹配时,浏览器则不发送这个 Cookie
httpOnly:是微软对 COOKIE 做的扩展。如果在 COOKIE 中设置了“httpOnly”属性,则通过程序(JS 脚本、applet 等)将无法读取到COOKIE 信息,防止 XSS 攻击产生 
singed:表示是否签名cookie, 设为true 会对这个 cookie 签名,这样就需要用 res.signedCookies 而不是 res.cookies 访问它。被篡改的签名 cookie 会被服务器拒绝,并且 cookie 值会重置为它的原始值1234567891011121314domain属性使用demo:
    /*
    cookie-parser可以设置和获取cookie
    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');
    3.设置中间件
     app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问
    5.获取cookie
     req.cookies.name


    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的


    baidu.com  域名

    news.baidu.com    www.baidu.com


    aaa.com
    news.aaa.com
    www.aaa.com
    //domain:'.aaa.com' 多个二级域名共享cookie
    * */
    var express  = require('express');
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser());


    app.get("/",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs");    });
    app.get("/news",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs  news");    });
    app.get("/set",function(req,res){

        //参数1:名字        //参数2:cookie的值        //参数3:cookie的配置信息        res.cookie('username','cookie的值111',{maxAge:600000,domain:'.aaa.com'});


        res.send("设置cookie成功");    });

    app.listen(3001,'127.0.0.1');

path属性使用demo:

    /*
    cookie-parser可以设置和获取cookie
    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');
    3.设置中间件
     app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问
    5.获取cookie
     req.cookies.name


    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的


    baidu.com  域名

    news.baidu.com    www.baidu.com


    aaa.com
    news.aaa.com
    www.aaa.com
     domain:'.aaa.com' 多个二级域名共享cookie


     path  表示在哪个路由下面可以访问cookie


     httpOnly:true 设置为true,表示只有在nodejs服务端可以操作cookie ,没法用js脚本语言操作cookie
    * */
    var express  = require('express');
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser());


    app.get("/",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs");    });
    app.get("/news",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs  news");    });
    app.get("/set",function(req,res){

        //参数1:名字        //参数2:cookie的值        //参数3:cookie的配置信息        res.cookie('userinfo','cookie111',{maxAge:600000,path:'/news',httpOnly:true});


        res.send("设置cookie成功");    });

    app.listen(3001,'127.0.0.1');123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179设置 cookieres.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) 
res.cookie('name', 'tobi', { domain: '.example.com', path: '/admin', secure: true }); 
res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); 12345获取 cookie    req.cookies.name 1设置并获取cookie的demo:
/*
    cookie-parser可以设置和获取cookie
    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');
    3.设置中间件
     app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问
    5.获取cookie
     req.cookies.name

    * */
    var express  = require('express');
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser());


    app.get("/",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs");    });
    app.get("/news",function(req,res){
        console.log(req.cookies);        res.send("你好nodejs  news");    });
    app.get("/set",function(req,res){

        //参数1:名字        //参数2:cookie的值        //参数3:cookie的配置信息        res.cookie('username','cookie的值',{maxAge:60000});


        res.send("设置cookie成功");    });

    app.listen(3001,'127.0.0.1');1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162删除 cookie    res.cookie('rememberme', '', { expires: new Date(0)}); 
    res.cookie('username','zhangsan',{domain:'.ccc.com',maxAge:0,httpOnly:true}); 123加密 Cookie1.配置中间件的时候需要传参
    var cookieParser = require('cookie-parser');      app.use(cookieParser('123456'));  122.设置 cookie 的时候配置 signed 属性
res.cookie('userinfo','hahaha',{domain:'.ccc.com',maxAge:900000,httpOnly:true,signed:true}); 13.signedCookies 调用设置的 cookie
    console.log(req.signedCookies);   1demo:
    /*
    cookie-parser可以设置和获取cookie
    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');
    3.设置中间件
     app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问
    5.获取cookie
     req.cookies.name


    cookie保存在浏览器本地   如果没有过期的话关闭浏览器在打开cookie还是存在的




    aaa.com
        news.aaa.com
        www.aaa.com

        maxAge  过期时间
        domain:'.aaa.com' 多个二级域名共享cookie
        path  表示在哪个路由下面可以访问cookie
        httpOnly:true 设置为true,表示只有在nodejs服务端可以操作cookie ,没法用js脚本语言操作cookie
        signed属性设置成true 表示加密cookie信息

      让用户看不到cookie明文信息

      1.保存的时候加密
      2.cookie-parser里面  signed属性设置成true




    cookie的加密:

    1.参数表示加密的随机字符串     app.use(cookieParser('sign'));
    2.设置     res.cookie('userinfo','cookie222_info',{maxAge:600000,signed:true});

    3.使用  获取
     req.signedCookies
    * */
    var express  = require('express');
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser('sign'));

    app.get("/",function(req,res){
        //console.log(req.cookies);
        console.log(req.signedCookies);   /*获取加密的cookie信息*/        res.send("你好nodejs");    });    app.get("/set",function(req,res){

        //参数1:名字        //参数2:cookie的值        //参数3:cookie的配置信息        res.cookie('userinfo','cookie222_info',{maxAge:600000,signed:true});        res.send("设置cookie成功");
    });

    app.listen(3001,'127.0.0.1');123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104Cookie 的应用查看浏览过的城市:

    /*    * cookie-parser可以设置和获取cookie

    1.安装   cnpm instlal cookie-parser --save
    2.引入var cookieParser = require('cookie-parser');

    3.配置中间件
    app.use(cookieParser());
    4.设置cookie
     res.cookie("name",'zhangsan',{maxAge: 900000, httpOnly: true});
     //HttpOnly 默认false不允许 客户端脚本访问

    5.获取cookie
     req.cookies.name
    *    * */
    var express  = require('express');    var cookieParser = require('cookie-parser');    var app = express();
    app.use(cookieParser());
    app.get("/",function(req,res){

        res.send("您浏览过的城市-"+req.cookies.citys);    });
    /*您浏览过的城市  /lvyou?city=北京  /lvyou?city=上海    /lvyou?city=杭州    /lvyou?city=重庆 */
    app.get("/lvyou",function(req,res){
        //写入数据要做判断
        var city=req.query.city;  /*获取当前城市*/
        var citys=req.cookies.citys;  /*数组  获取所有的城市*/
        if(citys){
            citys.push(city)        }else{
            citys=[];  /*没有浏览过任何城市的话 citys改为数组 */
            citys.push(city)        }
        res.cookie('citys',citys,{maxAge:60*1000*10});
        res.send("您浏览的城市是"+city);    });
    app.listen(3001);--------------------- 作者:c. 来源:CSDN 原文:https://blog.csdn.net/cckevincyh/article/details/79815666 版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2018-12-10 11:35  aocn  阅读(156)  评论(0)    收藏  举报