首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >cookie设置在位置`/ set -cookie`,但无法使用express.js在`/user`检索

cookie设置在位置`/ set -cookie`,但无法使用express.js在`/user`检索
EN

Stack Overflow用户
提问于 2018-06-02 09:06:51
回答 1查看 206关注 0票数 0

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

代码语言:javascript
复制
// 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`’时

代码语言:javascript
复制
info: cookies:  { _ga: 'GA1.1.1192529393.1524186034',
  ss_cvr: '5407c247-08f6-4b6d-8b27-e623c7788eef|1523239108805|1524436640490|1524443386060|46' }
info: 

但是我应该看到一些版本的:'rememberme', '1',,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 11:29:38

以下是适用于我的完整示例。

server.js

代码语言:javascript
复制
// 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')});

然后是views/pages/user.pug:

代码语言:javascript
复制
doctype html
html
  body
    h1 Rememberme => #{cookies.__session}

在浏览器中导航,首先导航到http://localhost:3000/set-cookie,然后导航到http://localhost:3000/user。console.log(req.cookies)包含remember me,将其传递到模板中也可以。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50652647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档