13

リクエスト内で設定された Cookie を取得できません。

クッキーを設定しました

response.cookie('name', 'My name');

この方法でクッキーを取得したいのですが、以前は機能していましたが、エクスプレス構成を変更しましたが、何が問題なのかわかりません。

request.cookies is and empty Object

私のエクスプレス設定:

var express = require('express'),
    api = require('./routes/api');

var app = express();

app.configure(function () {
   app.set('port', process.env.PORT || 3000);
   app.use(express.favicon());
   app.use(express.logger('dev'));
   app.use(express.json());
   //app.use(express.bodyParser());
   app.use(express.compress()); // New call to compress content
   app.use(express.cookieParser());
   app.use(express.session({secret: 'secret'}));
   app.use(app.router);
   app.use(express.methodOverride());
   //app.use(express.static(__dirname + '/public'));
});

app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
    next();
});

app.configure('development', function () {
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function () {
    app.use(express.errorHandler());
});

クッキーの設定:

exports.singIn = function (req, res) {
    var mail = req.query.mail,
        password = req.query.password;

    return user.find({
        mail: mail
    }).then(function (d) {
        var user = usersData(u);

        res.cookie('mail', user.mail, { maxAge: 900000});
        res.cookie('password', crypted, { maxAge: 900000});
        res.json({ user: user });
        return { user: user }
    }).catch(function () {
        res.json(400, {"error-tag": "error-sing-in"});
        return {"error-tag": "error-sing-in"};
    });
};

Cookie の取得:

exports.account = function (req, res) {
    var mail = req.cookies.mail,
        password = req.cookies.password;
    //here req.cookies is an empty object. I don't know why? 
};
4

2 に答える 2

4

これが必要なミドルウェア関数である場合、追加のパッケージ (「cookie-parser」) を使用するのはちょっと誇張されています。

function cookieParser(req, res, next) {
  var cookies = req.headers.cookie;
  if (cookies) {
    req.cookies = cookies.split(";").reduce((obj, c) => {
      var n = c.split("=");
      obj[n[0].trim()] = n[1].trim();
      return obj
    }, {})
  }
  next();
}
app.use(cookieParser);

私のgraphQLサーバーで「cookie-parser」を使用できませんでした。

于 2021-04-07T18:30:47.183 に答える