Файл cookie экспресс-сессии не отправляется во внешний интерфейс, если я устанавливаю secure=true в сеансе выражения

Я пытаюсь установить файл cookie для хранения сеанса с помощью экспресс-сеанса. Я отправляю запросы через HTTPS.

app.use(session({
    secret: env.SESSION_SECRET,
    resave: false,
    saveUninitialized: false,
    cookie: {
        secure: true, // Ensure secure is set to true for HTTPS
        sameSite: 'none', // Required for cross-origin cookies
        httpOnly: true,
        maxAge: 60 * 60 * 1000 // 1 hour         
    },
    rolling: true,
    store: MongoStore.create({
        mongoUrl: env.MONGODB_CONNECTION_STRING
    })
}));

Если бы я только поставил:

cookie: {
        httpOnly: true,
        maxAge: 60 * 60 * 1000 // 1 hour         
    },

Затем браузер получает файл cookie, но он не работает, поскольку поступает из https и перекрестного происхождения. Если я поставлю:

cookie: {
        secure: true, // Ensure secure is set to true for HTTPS
        sameSite: 'none', // Required for cross-origin cookies
        httpOnly: true,
        maxAge: 60 * 60 * 1000 // 1 hour         
    },

Тогда cookie вообще не будет получен во внешнем интерфейсе. Я развернул как интерфейсную, так и серверную часть в Vercel.

Я попытался поместить в файл cookie secure: true, SameSite: 'none', но тогда файл cookie вообще не был получен во внешнем интерфейсе.

🤔 А знаете ли вы, что...
Node.js позволяет создавать высокоэффективные приложения для обработки потоковой передачи данных.


70
1

Ответ:

Решено

Проблема решена путем установки доверенного прокси.

app.set('trust proxy', 1) // trust first proxy

Мохит Шарма подтвердил то же самое в своих комментариях.

Цитата:

  1. Express JS/ Node JS: браузеры не устанавливают файлы cookie, если secure=true, SameSite: 'none'

  2. экспресс-сессия