-1
로 빈 객체를 반환하지만 내가 req.cookies
를 사용하는 경우, 그것은 고해상도의 기본값 인 (} {돌아갑니다. 쿠키). 많은 웹 페이지를 검색했지만 올바른 값을 반환 할 수는 없습니다. PS : Express는 server.js에서 4.15.2, 내가 <code>express.js</code>에 <code>res.cookie</code> 또는 <code>res.append('Set-Cookie',...)</code>를 사용하여 쿠키를 설정하기 위해 노력하고있어 {}
입니다 : cookie
하지만 : 나는에 로그인하면
var express = require('express');
var session = require('express-session');//设置session
var cookieParser = require('cookie-parser');//解析cookie
var bodyParser = require('body-parser');
var app = express();
app.use(express.static('public'));
app.use(session({
secret: 'keyboard cat',
cookie: { maxAge: 60000 },
resave: false,
saveUninitialized: true
}));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(cookieParser());
//设置跨域访问
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
// 查询所有博客数据
app.get('/getAll',function(req,res){
var pageNum = req.query.pageNum;
//连接数据库
query("some sql",function(err,vals,fields) {
console.dir(req.session.id);
// Cookies that have not been signed
console.log('Cookies: ', req.cookies)
// Cookies that have been signed
console.log('Signed Cookies: ', req.signedCookies)
res.send(vals);
});
});
//登陆验证
app.post('/login',function(req,res){
var username = req.body.username;
var password = req.body.password;
//过滤
var sql = "some sql";
query(sql,function(err,vals,fields) {
if(vals.length == 1){
//登录成功
//res.cookie('mycookie', '1234567890', { domain:'localhost',secure:false, maxAage:120000, httpOnly: true });
res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');
// req.cookie('sid',req.session.id,{ maxAge: 900000, httpOnly: false});
res.send("ok");
}else{
//登陆失败
res.send("false");
}
});
});
app.get('/', function (req, res) {
res.sendFile(__dirname + "/"+ "index_prod.html");
})
var server = app.listen(8081, function() {
var host = server.address().address
var port = server.address().port
console.log("应用实例,访问地址为 http://%s:%s", host, port)
})
는, 결과는 다음과 같습니다 /getAll
을 요청하면 쿠키 용 콘솔은 {}입니다. (기본값이 아니라 우리가 작성한 값이 아닙니다). 쿠키 및 세션이 올바르게 사용 된 경우
질문이 무엇인지 정확히 알기가 어렵습니다. 왜'req.cookies'가'getAll' 라우트 핸들러 내부의 빈 객체인지 묻고 있습니까? 쿠키 파서 모듈이 성공적으로로드되고 있는지 100 % 확신합니까? 참고로,'res.cookie()'는 쿠키 설정에 사용됩니다. 당신의 질문은 유효한 속성 이름이 아닌'res.cookies'를 언급합니다. 당신은 쿠키를 설정하기 위해'res.cookie()'를 사용하거나 요청과 함께 도착한 쿠키를 읽도록'req.cookies'를 사용해야합니다. 'req.cookies'는 쿠키 파서 미들웨어가 필요합니다. – jfriend00
감사합니다. 이유가 있습니다. – Tony