zoukankan      html  css  js  c++  java
  • express cookie的使用

    Cookie 简介 ●

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

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

    Cookie 特点

    cookie 保存在浏览器本地
    ● 正常设置的 cookie 是不加密的,用户可以自由看到;
    ● 用户可以删除 cookie,或者禁用它
    cookie 可以被篡改
    cookie 可以用于攻击
    cookie 存储量很小。未来实际上要被 localStorage 替代,但是后者 IE9 兼容。

    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){
    
        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-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');
    /*
    
    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

    删除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.c ookie('userinfo','hahaha',{domain:'.c cc.c om',maxAge :900000,httpOnly :true,signed :true});

    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-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);
  • 相关阅读:
    尝试一下搭博客
    python IO
    python OOP
    杂笔记
    codeforces 217E 【Alien DNA】
    dfs序七个经典问题(转)
    poj 1945 Power Hungry Cows A*
    NOIP 2012 洛谷P1081 开车旅行
    洛谷 P1924 poj 1038
    poj 2176 folding
  • 原文地址:https://www.cnblogs.com/loaderman/p/11506440.html
Copyright © 2011-2022 走看看