首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Render.com:在HttpOnly服务之间执行res.cookie时没有在浏览器存储中设置HttpOnly Cookie

Render.com:在HttpOnly服务之间执行res.cookie时没有在浏览器存储中设置HttpOnly Cookie
EN

Stack Overflow用户
提问于 2022-04-15 21:30:14
回答 1查看 731关注 0票数 3

我有一个NestJ应用程序,它使用HttpOnly cookie进行身份验证。在发展过程中,一切都是完美的。我的NextJs客户端(http://localhost:4200)使用Graphql向我的NestJs服务器(http://localhost:3333)发送登录请求,该服务器在响应中设置httpOnly cookie,然后客户端成功地将cookie添加到浏览器存储中。

然而,当我将这两个应用程序部署到Render.com上时,除了最后一步之外,一切都正常工作。cookies在响应中成功接收,但未添加到浏览器存储中。有趣的是,如果我使用已部署的生产服务器的GraphQL操场来发出登录请求,一切都会正常工作。因此,很明显,问题似乎是请求来自子域。

我的生产配置:

客户端:https://swingapple-web-staging.onrender.com

服务器:https://swingapple-api-staging.onrender.com

烹饪设置(服务器):

代码语言:javascript
复制
sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax',
secure: process.env.NODE_ENV === 'production',
domain: process.env.NODE_ENV === 'production' ? '.onrender.com' : undefined

Nestjs的GraphQLModule设置(服务器):

代码语言:javascript
复制
playground: true,
introspection: true,
autoSchemaFile: true,
sortSchema: true,
context: ({ req, res }) => ({ req, res }),
cors: {
    credentials: true,
    origin: [process.env.CLIENT_URL, 'http://localhost:4200']
}

相关main.ts配置(服务器):

代码语言:javascript
复制
app.set('trust proxy', 1);

图形库-请求设置(客户端):

代码语言:javascript
复制
credentials: 'include'

我花了好几天的时间想办法解决这个问题,所以任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-15 23:30:56

在与Render.com支持部门交谈后,他们告诉我,onrender.com (其子域的域)在公共后缀列表中,这意味着跨站点cookie无法工作。解决方案是为两个Web服务添加一个自定义域(这显然必须是相同的,例如app.my-custom-domain.com和api.my-custom-domain.com)。我这么做了,现在一切都如愿以偿了!

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71889130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档