首先在html页面,有以下代码:
会话登录
设置钥匙
function getSessionId(){
$.post('/lock/getSessionId',function(data){
alert("数据为:"+data);
});
}
function setkey(){
$.post('/lock/getKey',function(data){
alert("数据为:"+data);
});
}
在后端代码中设置的路由
router.post('/getSessionId',function(req,res){
var options = {
url : 'https://clb.kdware.cn:5000/v1.1/login',
method : 'post',
json : true
};
var data = {};
data.name = '09000001';
data.passwd = '789456';
options.body = data;
request(options).then(function(_data){
var body = _data.body;
if(body.resultCode === 0){
req.session.sessionid = body.sessionid;
console.log('保存时session里面的值:',req.session.sessionid);
res.send('获取sessionid成功!保存到了cookie里面');
}else{
res.send('获取sessionid失败!');
}
});
});
这个功能的路由能正常执行,且界面弹出:获取sessionid成功!保存到了cookie里面
但是第二个路由就获取不到session数据,我也试过配置cors跨域设置
比如在app.js文件里面加载以下代码:
//设置跨域访问
app.all('*',function(req,res,next){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
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();
});
如下代码:
router.post('/getKey',function(req,res){
var options = {
url : 'https://clb.kdware.cn:5000/v1.1/setKey',
method : 'post',
json : true
};
var data = {};
data.sessionid = req.session.sessionid;
console.log('设置钥匙时获得的sessionId:',data.sessionid);
data.projectID = "9981";
data.keyType = 1;
data.keyValue = "789456";
data.owner = "kdware";
data.beginDate = "2018-5-21T13:29:00.000";
data.endDate = "2018-5-22T13:29:00.000";
data.devices = ['11863'];
options.body = data;
request(options).then(function(_data){
var body = _data.body;
console.log("设置钥匙返回的数据:",body);
if(body.resultCode === 0){
res.send('设置钥匙成功!');
}else{
res.send('设置钥匙失败!');
}
});
});
结果还是无效,在页面会弹出:设置钥匙失败!控制台会打印:设置钥匙时获得的sessionId: undefined
我想知道的是在第二个路由这里怎么才能获取第一个路由设置的sessionid,求大神指点迷津