nodejs

阅读: 评论:0

nodejs

nodejs

cookie-parser

官网:

一、概念: cookie ==> 小甜饼 , parser ==> 解析器,  cookie-parser 就是用来解析 cookie 的. 

二、cookie存储位置:cookie是存储在客户端浏览器中.每个浏览器的 cookie 都是独立的, 不能共享.

cookie 其实就是请求头中的一个数据.

作用: 方便向服务器发送数据,当服务器向客户端在响应头写入cookie,下一次发送请求会把cookie跟请求头一起发送给服务器。

(所以如果没有cookie-parser包,我们也可以通过req.headers在请求头中获取cookie)

cookie使用场景:通常用于服务器通过cookie识别用户的身份。

请求头:GET /admin HTTP/1.1
Host: localhost
User-agent: firefox chrome ie iphone ios andoid
referer: localhost/login
content-type: text/htm;charset==utf-8
cookie: name=admin.......

 

三、使用:

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

2. 引入并设置:
  var cookieParser = require('cookie-parser');
  app.use(cookieParser());
2.1 设置cookie : 

  kie('name','xiaohigh')
  kie('name','xiaohigh', {maxAge: 600000})

★ &#kie('name','xiaohigh')`    如果不设置 cookie 的生命周期, 则cookie 会随着浏览器的关闭而过期.

 

  kie('haha',  'name1=value1&name2=value2',  {maxAge:10*1000,  path:'/',  httpOnly:true });
  • 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攻击产生

 

2.2 读取cookie :  kies.name
2.3 清除cookie :  res.clearCookie('name')

 

四、实例链接栗子

1.设置cookie

var express=require('express');
var app=express();var cookieParser=require('cookie-parser');
app.use(cookieParser());('/setCookie',function(req,res){kie('name','slig');d('ok');
});app.listen(80);

 

第一次请求:响应头中 set-Cookie:name=slig;path=/  此时已把cookie写入浏览器客户端。 请求头中没有cookie

 

第二次请求(再次刷新页面):响应头中 set-Cookie:name=slig;path=/ ; 请求头中有上一次的cookie: Cookie:name=slig

 

2.获取cookie、清除cookie

var express = require('express');
var app = express();//引入cookie-parser
var cookieParser = require('cookie-parser');//设置
app.use(cookieParser());//模板
app.set('view engine', 'ejs');
app.set('views','views');//路由
('/setCookie', function(req,res){//写入kie('name','slig');//响应头中d('ok');
});//获取cookie
('/getCookie', function(req,res){//获取
  console.kies.name);d('获取cookie')
});//删除cookie
('/delCookie', function(req, res){res.clearCookie('name');d('clear cookie');
});// 
app.listen(8080);
app.js

 

 3. 模拟服务器通过cookie识别用户的身份栗子:

模拟需求:
// 没有登陆可以访问   
//  /home 首页   /list  列表页// 必须之后之后才可以访问 
//  /admin 个人中心页//  登陆页面 
//  GET /login    
// 实现登陆  admin  admin 为后台管理员账号密码
//  POST /login

 

var express = require('express');
var app = express();
//引入cookie-parser
var cookieParser = require('cookie-parser');
var formidable = require('formidable');
//设置
app.use(cookieParser());
//模板
app.set('view engine', 'ejs');
app.set('views','views');// 没有登陆可以访问   
//  /home   /list // 必须之后之后才可以访问 
//  /admin//  登陆页面 
//  GET /login    
// 实现登陆  (账号:admin  密码:admin) 为后台管理员账号密码
// //检测用户是否登陆  cookie.id 有值  cookie.admin = 1
//  POST /login

('/home',function(req,res){res.setHeader('content-type','text/html;charset=utf-8');d('网站首页!!!');
});('/list',function(req,res){res.setHeader('content-type','text/html;charset=utf-8');d('网站列表页!!!');
});//网站后台
('/admin',function(req,res){//检测用户是否登陆  cookie.id 有值  cookie.admin = kies.id && kies.admin == 1){res.setHeader('content-type','text/html;charset=utf-8');d('网站后台!!!');}direct('/login');}
});//登陆页面
('/login', function(req,res){//显示表单der('login');
});//登陆操作
app.post('/login', function(req,res){//获取参数var form = new formidable.IncomingForm();form.parse(req, function(err, fields, files) {//fields 对象if(fields.username == 'admin' && fields.password == 'admin'){//参数正确  写入cookieres.setHeader('content-type','text/html;charset=utf-8');kie('id', 100, {maxAge: 600000});kie('admin', 1, {maxAge: 600000});d('登陆成功');}else{//参数错误 跳转到 登陆页面direct('/login');}});
});app.listen(80);
app2.js

 

转载于:.html

本文发布于:2024-01-27 17:32:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063479251670.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:nodejs
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23