Nodejs学习文档day2———express框架及cookie、session

express框架使用

  • 安装     
  1. npm install express express-static
  • 配置
  1. 创建服务  var server=express();
  2. 监听        server.listen(8080);
  3. 处理请求  server.use('地址',function(req,res){     });
  • 接收请求(3种方法)
  1. .get(‘/’,function(req,res){});
  2. .post(‘/’,function(req,res){});
  3. .use(‘/’,function(req,res){});   //通吃,可以接收get和post
  • 相应数据

express是一个非侵入式框架

即express和原生的区别只在于express仍能使用原生的函数如res.write();和res.end();

但express比原生多了一个res.send();

这个函数可以直接发送json数据

总的来说,express保留了原生的功能添加了一些方法,增强原有的功能

express-static用法

const expressStatic=requeire('express-static');

server.use(expressStatic('./www'));

GET/POST数据

GET-无需中间件 req.query

POST-需要”body-parser”

server.use(bodyParser.urlencoded({limit:xxx}));

server.use(function(req,res,next){

		req.body

});

链式操作

server.use(function(req,res,next){});

server.get(function(req,res,next){}); //server.get(‘/’,function(req,res,next){});

server.post(function(req,res,next){});

next-----下一个步骤

next();

//模拟链式操作

server.use(‘/login’,function(){

		mysql.query(function(){

			if(有错)

				res.emit(‘error’);

			else

				next();

});

});

中间件(body-parser)

next();

自己写中间件

server.use(function(req,res,next){
		var str=’’;
		req.on(‘data’,function(data){
			str+=data;
});
req.on(‘end’,function(){
	req.body=querystring.parse(str);
next();
});
});

cookie和session存在的意义

http 缺点:无状态的  两次请求之间无法判断是不是同一个人

cookie:

cookie:在浏览器保存一些数据,每次请求都会带过来

*不安全、有限(4k)空间非常小省着用

1.读取——cookie-parser cookie-parser   

server.use(cookieParser(‘签名’));

server.use(function(){

		req.cookies  未签名

		req.signedCookies  签名版

});

2.发送——cookie-session

res.secret=’字符串’;

res.cookie(‘名字’,’值’,{path:’/’,maxAge:毫秒,signed:true});

3.删除cookie

res.clearCookie(名字);

session:

session:保存数据,保存在服务端

*安全、无限(取决于服务器大小)

mod:cookie-session

使用:

server.use(cookieParser());
server.use(cookieSession({
			key:[]
}))
server.use(‘/’,function(){
			req.session
});
删除:
delete req.session

session:基于cookie实现的

*cookie中会有一个session的ID,服务器利用sessionid找到session文件、读取、写入

隐患:session劫持

安全的session:

const express=require('express');
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');

var server=express();

//多个密钥
var arr[];//定义一个空数组
for(var i=0;i<10000;i++)
{
	arr.push('sig_'+Math.random());  //1万个随机密钥
}
server.use(cookieParser());
server.use(cookieSession({
	name:'sess',  //随意改名
	keys:arr,
	maxAge:1000*3600*2
}));
//session
server.use('/',function(req,res){

	if(req.session['count']==null){
		req.session['count']=1;
	}else{
		req.session['count']++;
	}
	console.log(req.session['conunt']);
	res.send('ok');
});

server.listen(8081);










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值