在部署到谷歌应用引擎的应用程序中使用快速会话安全

问题描述 投票:0回答:1

我有一个与我的 Node.js 服务器通信的 Next 应用程序。

在开发模式下,即使部署到Google,一切都工作正常,但是当我更改环境时,这就是问题开始的地方。

基本上,我有这个快速会话设置:

if(process.env.NODE_ENV !== 'development'){
    app.set('trust proxy', 1);
}

app.use(
    session(
        { 
            //store: redisStore,
            secret: process.env.SERVER_SESSION_SECRET,
            resave: false,
            saveUninitialized: false,
            cookie: {
                maxAge: 14 * 24 * 60 * 60 * 1000, 
                httpOnly: process.env.NODE_ENV === 'development' ? false : true,
                secure: process.env.NODE_ENV === 'development' ? false : true, 
                sameSite: process.env.NODE_ENV === 'development' ? false : 'none', 
                domain: process.env.BASE_URL || 'localhost',
                proxy: true,
            }
        }
    )
);

当我获取 API 时,应该设置一个 cookie,但它没有这样做。我知道问题可能与 HTTP 和 HTTPS 有关,但我的 URL 已经是 HTTPS(我刚刚添加了自定义域)。我需要在 GAE 中配置其他东西吗?

不知道这是否有帮助,但我的

app.yaml
看起来像这样:

env: standard
runtime: nodejs18
service: stg
handlers:
- url: /.*
  script: auto
  secure: always
node.js google-app-engine express-session
1个回答
0
投票

发布我之前的评论作为答案。

通过在js文件中添加以下代码解决了该问题:

app.set('trust proxy', true);

此外,请确保

env
变量正确。

您可以查看有关 HTTPS 和转发代理的文档,其中包含 Express.js 的

trust proxy
设置。

© www.soinside.com 2019 - 2024. All rights reserved.