Экспресс-сессия пуста в Safari - PullRequest
0 голосов
/ 06 июня 2018

Я создаю приложение Node.js с помощью Express.Я использую экспресс-сессию для сессий.Данные, которые я храню в сеансе, доступны в IE, Chrome и Firefox.Но в Safari сессия все время пуста.Поэтому, когда я делаю console.log(req.session), он печатает:

Session {
  cookie: { 
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    secure: true 
   },
   userHasCheckCorrect: true 
 }

Это мои настройки в server.js

app.use(session({
  secret: process.env.SESSION_SECRET,
    resave: false,
    saveUninitialized: true,
    cookie: {
        secure: true,
        httpOnly: true
    }
}));

Это сервер с сертификатом SSL, поэтому это домен HTTPS.С HTTP, похоже, нормально работает в Safari.Что я здесь не так делаю?Есть настройки, которые мне не хватает?Я посмотрел во многих местах, но пока не смог найти ответ.И почему это работает во всех браузерах Safari?

1 Ответ

0 голосов
/ 24 января 2019

В Safari требуется передать учетные данные: 'include' в заголовок запроса, в противном случае он не отправляет файлы cookie.

Возможно, вы также захотите установить глобальный заголовок ответа после установки промежуточного программного обеспечения сеанса.примерно так:

app.use(function(req, res, next) {
    res.set('credentials', 'include');
    res.set('Access-Control-Allow-Credentials', true);
    res.set('Access-Control-Allow-Origin', req.headers.origin);
    res.set('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.set('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
    next();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...