【问题标题】:ExpressJS & Cookies - Cannot get express-cookie to Initialize a CookieExpressJS & Cookies - 无法获取 express-cookie 来初始化 Cookie
【发布时间】:2019-01-06 21:40:06
【问题描述】:

我观看了一个 YouTube 教程 (https://youtu.be/hNinO6-bDVM?t=2m33s),将以下代码添加到 app.js 后,可以在开发者工具 Application 选项卡中看到 cookie:

var session = require('express-session');
app.use(session({
    secret: 'keyboard cat',
    name: 'testcookie',
    resave: false,
    saveUninitialized: true,
    cookie: {
        secure: false
    }
}))

但是,我没有看到 cookie 的运气。我觉得我几乎尝试了所有方法,但这就是我得到的全部:

这是我完整的app.js 文件:

var createError = require('http-errors');
var express = require('express');
var cookieParser = require('cookie-parser')
var path = require('path');
var logger = require('morgan');
var session = require('express-session');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/login');
var createSession = require('./routes/session');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/login', usersRouter);
app.use('/session', createSession);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

app.set('trust proxy', 1);
app.use(session({
    secret: 'keyboard cat',
    name: 'testcookie',
    resave: false,
    saveUninitialized: true,
    cookie: {
        secure: false
    },
    proxy: true
}))

module.exports = app;

您知道可能缺少什么吗?我是 Express 的新手,这对我来说是一场不可思议的斗争。提前谢谢你。

【问题讨论】:

    标签: javascript node.js express cookies session-cookies


    【解决方案1】:

    为了在使用cookie-parser 中间件时在express 中设置cookie,您必须提供一个端点/路由 来提供cookie。在路由处理程序中添加代码

    res.cookie(“myCookieName”, {value: “some-value”})

    并且客户端将在访问该路由时收到 cookie。

    现在,最终用户发出的每个请求都会自动将 cookie 发送到您的服务器并使用 cookie-parser 进行解析。然后,我们设置的每个 cookie 都可以通过 req.cookie 对象上的名称访问,同时在路由处理程序主体中处理传入请求。

    如果您想在设置 cookie 时设置任何选项,所有选项,例如 expiredmaxAge cookie-parser 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      相关资源
      最近更新 更多