Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js cookie设置在位置“/set cookie”,但无法使用express.js在“/user”检索_Node.js_Firebase_Express_Cookies_Session Cookies - Fatal编程技术网

Node.js cookie设置在位置“/set cookie”,但无法使用express.js在“/user”检索

Node.js cookie设置在位置“/set cookie”,但无法使用express.js在“/user”检索,node.js,firebase,express,cookies,session-cookies,Node.js,Firebase,Express,Cookies,Session Cookies,我在firebase上有一个node.js应用程序。但是,在这里,它的宿主位置应该不太重要,因为我只是尝试将一些信息存储在/set cookie路径中的cookie中,以便可以在/user路径中访问它。index.ts中的相关代码如下: // create HTTP server const app = express(); // use json form parser middleware app.use(bodyParser.json()); // use query string p

我在firebase上有一个node.js应用程序。但是,在这里,它的宿主位置应该不太重要,因为我只是尝试将一些信息存储在
/set cookie
路径中的cookie中,以便可以在
/user
路径中访问它。
index.ts
中的相关代码如下:

// create HTTP server
const app = express();

// use json form parser middleware
app.use(bodyParser.json());

// use query string parser middlware
app.use(bodyParser.urlencoded({ extended: true }));


// cookies
app.use(cookieParser());

app.use(cookieSession({
      name   : 'session'
    , keys   : ['abigsecret', 'anothersecret']
    , maxAge : 100 * 60 * 60 * 1000
}));


// setting the cookie here
app.get('/set-cookie', (req,res) => {
    res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });
    res.send('cookie set...');
}})



// And I would like to access it here
app.get('/user' , (req, res) => {
    console.log('cookies: ', req.cookies)
    res.render('pages/user')
});
当然,这并没有达到预期效果。因为在控制台上,我看不到我在
/set cookie
中设置的cookie,而是一些传递给服务器的客户端cookie。如何设置cookies以便我可以在其他地方访问它

我在控制台上看到的是,当我在“/get cookie”之后导航到“/user`

info: cookies:  { _ga: 'GA1.1.1192529393.1524186034',
  ss_cvr: '5407c247-08f6-4b6d-8b27-e623c7788eef|1523239108805|1524436640490|1524443386060|46' }
info: 

但是我应该看到一些版本:
“rememberme”、“1”和
正确吗?

下面是一个对我有效的完整示例

server.js

// create HTTP server
const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const cookieSession = require('cookie-session');
const pug = require('pug');
const app = express();

app.set('views', './views');
app.set('view engine', 'pug');

// use json form parser middleware
app.use(bodyParser.json());

// use query string parser middlware
app.use(bodyParser.urlencoded({ extended: true }));


// cookies
app.use(cookieParser());

app.use(cookieSession({
      name   : 'session'
    , keys   : ['abigsecret', 'anothersecret']
    , maxAge : 100 * 60 * 60 * 1000
}));


// setting the cookie here
app.get('/set-cookie', (req,res) => {
    res.setHeader('Cache-Control', 'private');
    res.cookie('__session', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });
    res.send('cookie set...');
});



// And I would like to access it here
app.get('/user' , (req, res) => {
    console.log(req.cookies);
    res.render('pages/user', {cookies: req.cookies})
});

app.listen(3000, () => { console.log('Listening on port 3000')});
然后查看/pages/user.pug:

doctype html
html
  body
    h1 Rememberme => #{cookies.__session}

首先在浏览器中导航到,然后再导航到对我有效。console.log(req.cookies)包含“记住我”并将其传递到模板中也有效。

您是否在/user之前导航到/set cookie?对我来说似乎很好。@clockwatcher是的。您是如何访问此位的:“rememberme”、“1”?用我提供的代码?Mine做了一些不同的事情>可能是因为我的主机在firebase上吗?好的,当我使用
app.listen运行上面用node.js服务器启动的示例时,cookie就设置好了。事实上,我可以从许多node.js项目实例访问cookie。问题是,我实际上是在使用firebase服务器的
exports.app=functions.https.onRequest(app)
,因此出于某种原因,我无法使用res.cookie设置cookie,即使这里的文档中使用的是:。此外,当我部署站点时,它也无法在生产中设置cookies。确定在此处找到答案:。我只需要一行代码
res.setHeader('Cache-Control','private');上面的
res.cookie(…)`。