node.js中cookie的设置和获取:通过设置响应头来设置cookie,通过req.headers.cookie来获取cookie
var http = require('http');
var querystring = require("querystring");
var server = http.createServer(function(req, res){
res.writeHeader(200,{
'Set-Cookie' : 'myCookie = test',
'Content-Type' : 'text/plain'
});
//node.js中res对象下没有cookie(),res.cookie('testName', 'testValue');这样写会报错
console.log(req.headers.cookie);//不能使用req.cookie
res.end('hello world!');
});
server.listen(8080, '127.0.0.1');
console.log('Server running on port 8080.');
express中,只是给res对象添加了一个cookie()方法,用来设置cookie,获取cookie的方式和node.js相同
app.get("/",function(req,res){
res.cookie('testName', 'testValue');
// console.log(req.cookie);//undefined
console.log(req.headers.cookie);//__guid=96992031.1518789250787072500.1511685488125.594; myCookie=test; testName=testValue; monitor_count=34
res.send("你好");
});
app.listen(3000);
第一次访问http://127.0.0.1:3000/,响应头中有设置的cookie信息,请求头中没有设置的cookie信息
刷新页面后:请求头中出现了设置的cookie
cookie-parser中,只是给req对象添加了cookies属性,设置cookie和express中相同:
var express = require("express");
var cookieParser = require("cookie-parser");
var app = express();
app.use(cookieParser());
app.get("/",function(req,res){
res.cookie('username', 'Jack');
res.send("你好");
});
app.listen(3000);
console.log(req.cookies.username);//Jack
session:
express-session中session的设置和获取都在req对象中:
var express = require("express");
var app = express();
var session = require("express-session");
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}));
app.get("/",function(req,res){
if(req.session.login == "1"){
res.send("欢迎" + req.session.username);
}else{
res.send("没有成功登陆");
}
});
app.get("/login",function(req,res){
req.session.login = "1"; //设置这个session
req.session.username = "考拉";
res.send("你已经成功登陆");
});
app.listen(3000);