我有一个与我的 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
发布我之前的评论作为答案。
通过在js文件中添加以下代码解决了该问题:
app.set('trust proxy', true);
此外,请确保
env
变量正确。
您可以查看有关 HTTPS 和转发代理的文档,其中包含 Express.js 的
trust proxy
设置。