【发布时间】:2021-08-08 13:10:58
【问题描述】:
我在 Netlify 上部署了一个带有自定义 https 域的 react 应用,以及一个在 Heroku 上部署的 node/express 应用(免费计划,无自定义域)。
所有不受保护的路由都有效。但是,我无法访问受保护的路由,因为前端永远不会发送 auth cookie。为何如此?因为服务器没有正确发送cookie!
以下是 cookie 的发送方式:
return res
.status(200)
.cookie("myApp", token, {
expires: new Date(Date.now() + msPerDay * 14),
httpOnly: true,
secure: true,
})
.json({ user });
index.js 是:
app.use(cors({ credentials: true, origin: [process.env.CLIENT as string] }));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(compression());
app.use(cookieParser());
在 chrome 的应用程序选项卡中,我可以看到没有设置 cookie。但是,它在localhost中正确填写!
如何解决这个问题?如果您需要更多代码,我很乐意提供,但我不知道问题是来自代码本身还是 heroku 和我的 netlify 域之间的网络问题......客户端当然被 cors 列入白名单。
【问题讨论】:
-
我认为你需要使用sameSite: "lax"
标签: node.js express heroku netlify cookie-httponly