В Nodejs с безопасным cookie и HTTPOnly за прокси-сервером. Как HttpOnly flag и Cookie с флагом Secure отправляют заголовки на прокси-сервер?
Я читал и предполагаю, что мне нужно включить X-Forward-Proto на моем прокси-сервере?
process.env.NODE_ENV = 'production';
if (app.get('env') === 'production') {
app.set('trust proxy', 1) // trust first proxy
}
app.use(session({
store: new RedisStore({host: '127.0.0.1', port: 6379, client: client, ttl: 3600}),
key: 'sid',
secret: 'abcde',
resave: false,
saveUninitialized: false,
// proxy: true,
cookie: {
secure: true,
httpOnly: true,
maxAge: 3600000
}
}));





Флаг HttpOnly рассматривается только HTTP-клиентом. Прокси-сервер HTTP просто передаст флаг и проигнорирует его.
Пока клиент сам подключается к серверу (или прокси, если это обратный прокси) через HTTPS, он будет работать.
Обычные прокси-серверы не должны этого делать. Может быть, ваш. Я бы посоветовал заглянуть в ваш прокси, если это так.
У меня была аналогичная проблема и решил ее с помощью этот учебник.
Вам также необходимо установить для параметра proxy значение true в конфигурации сеанса.
Я бы предложил сделать это с помощью выражения переменной окружения process.env.NODE_ENV === "production".
app.use(session({
store: new RedisStore({host: '127.0.0.1', port: 6379, client: client, ttl: 3600}),
key: 'sid',
secret: 'abcde',
resave: false,
saveUninitialized: false,
proxy: process.env.NODE_ENV === "production",
cookie: {
secure: process.env.NODE_ENV === "production",
httpOnly: true,
maxAge: 3600000
}
}));
Из документов экспресс-сессия:
proxy
Trust the reverse proxy when setting secure cookies (via the "X-Forwarded-Proto" header).
The default value is undefined.
true The "X-Forwarded-Proto" header will be used.
Значит, отсутствует параметр, не отображаются в файлах cookie Google Chrome. Это нормально для тех, кто находится за прокси-сервером? HTTP-прокси-сервер, похоже, не передает флаг.