Файл cookie устанавливается в папке `/ set-cookie`, но не может быть получен в папке` / user` с помощью express.js. - PullRequest
0 голосов
/ 02 июня 2018

У меня есть приложение node.js, размещенное на firebase.Однако, где он размещен, здесь не должно иметь большого значения, так как я просто пытаюсь сохранить некоторую информацию в файлах cookie в пути /set-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')
});

Конечно, это не работает, как задумано.так как на консоли я не вижу cookie, который я установил в /set-cookie, а скорее какой-то cookie на стороне клиента, который был передан на сервер.Как настроить файлы cookie, чтобы я мог получить к ним доступ в другом месте?

Что я вижу на консоли, так это при переходе к '/ user` after' / get-cookie '

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

но я должен увидеть какую-то версию: 'rememberme', '1', правильно?

1 Ответ

0 голосов
/ 02 июня 2018

Ниже приводится полный пример, который работает для меня.

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')});

Затем views / pages / user.pug:

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

Навигация в браузере сначала на http://localhost:3000/set-cookie, а затем на http://localhost:3000/user работает для меня.Console.log (req.cookies) включает в себя функцию запомнить меня, и передача его в шаблон также работает.

...