2017-03-28 3 views
-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을 요청하면 쿠키 용 콘솔은 {}입니다. (기본값이 아니라 우리가 작성한 값이 아닙니다). 쿠키 및 세션이 올바르게 사용 된 경우

+1

질문이 무엇인지 정확히 알기가 어렵습니다. 왜'req.cookies'가'getAll' 라우트 핸들러 내부의 빈 객체인지 묻고 있습니까? 쿠키 파서 모듈이 성공적으로로드되고 있는지 100 % 확신합니까? 참고로,'res.cookie()'는 쿠키 설정에 사용됩니다. 당신의 질문은 유효한 속성 이름이 아닌'res.cookies'를 언급합니다. 당신은 쿠키를 설정하기 위해'res.cookie()'를 사용하거나 요청과 함께 도착한 쿠키를 읽도록'req.cookies'를 사용해야합니다. 'req.cookies'는 쿠키 파서 미들웨어가 필요합니다. – jfriend00

+0

감사합니다. 이유가 있습니다. – Tony

답변

-1

는 이유가있을 수 있습니다 :

  1. 클라이언트와 서버가 동일 출처 정책을 준수해야합니다. 그렇지 않은 경우 변경하십시오.
  2. 웹 사이트에 오류가 없는지 확인하십시오. 위의 코드에서 이미지 가져 오기 과정에서 404 (찾을 수 없음)과 같은 다른 오류가 종료됩니다.