Почему экспресс-сессия (атрибут SameSite) не работает в Chrome?

Я разрабатываю веб-приложение с помощью Express.js и React.js. Я использую экспресс-сеанс, но он не работает. Вот как я его использую:

app.use(session({
  store: new MongoStore({
mongooseConnection: mongoose.connection,
ttl: 365 * 24 * 60 * 60
  }),
  secret: process.env.SESSION_SECRET,
  resave: true,
  saveUninitialized: false,
  cookie: {
maxAge: 24 * 60 * 60 * 1000,
httpOnly: true, 
secure: false,
SameSite: 'strict',
  }
}));

Я пробовал использовать secure в true, false, auto и во всех возможных комбинациях. И всегда была одна и та же проблема с Chrome:

В будущей версии браузера файлы cookie, помеченные как SameSite = None, также должны быть помечены как Secure, чтобы их можно было настроить в межсайтовом контексте. Такое поведение защищает данные пользователя от отправки через небезопасное соединение. Решите эту проблему, обновив атрибуты файла cookie: укажите SameSite = None и Secure, если файл cookie предназначен для установки в межсайтовом контексте. Обратите внимание, что только файлы cookie, отправленные по HTTPS, могут использовать атрибут Secure. Укажите SameSite = Strict или SameSite = Lax, если файл cookie не должен устанавливаться межсайтовыми запросами.

Кто-нибудь знает как это решить?

Большое тебе спасибо.


person Nicolas Urman    schedule 30.07.2020    source источник
comment
Сразу отметим, что в будущей версии браузера прямо сейчас. Эта функция была включена для небольшого процента пользователей за последние несколько дней. chromium.org/updates/same-site   -  person spender    schedule 31.07.2020
comment
Да, я только что прочитал. Но я все еще не понимаю, почему он работает в моем Mac Chrome, работает в моем Windows Chrome, а в Chrome моего партнера нет. И я не знаю, как это решить ...   -  person Nicolas Urman    schedule 31.07.2020
comment
Такая же проблема здесь   -  person Richard Aguirre    schedule 25.08.2020
comment
такая же проблема и здесь, не похоже, что кто-то действительно выпустил много полезной информации по этому вопросу   -  person ezg    schedule 01.09.2020


Ответы (2)


SameSite: 'strict' вот в чем проблема! Первая буква «S» должна быть в нижнем регистре в JavaScript sameSite: 'strict'.

Кроме того, если это не решит вашу проблему, возможно ли, что это не тот же запрос сайта, и вам нужно изменить его на sameSite: none. Я могу ошибаться, я ничего не знаю, кроме того, чем вы поделились, но просто хотел выбросить это на всякий случай!

person ezg    schedule 01.09.2020

Вот пример с сессией и mongoStore:

const session = require('express-session');
const MongoStore = require("connect-mongo")(session);
const mongoose = require('mongoose');

module.exports = session({
  secret: 'SuperSecret - (Change it)', //!settear una variable de entorno. 
  resave: false,
  saveUninitialized: true,
  cookie: {
    secure: true,
    httpOnly: true,
    sameSite: 'none',
    maxAge: 60 * 60 * 24 * 1000
  },
  store: new MongoStore({
    mongooseConnection: mongoose.connection,
    ttl: 24 * 60 * 60
  })
});
person ValRob    schedule 10.09.2020