Cookie 发送到 localhost 但不发送到 https 域

问题描述

我在 Netlify 上部署了一个带有自定义 https 域的 React 应用程序,以及一个部署在 Heroku 上的节点/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 列入白名单。

解决方法

有同样的问题,我通过将 exposedHeaders: ["set-cookie"] 这个选项添加到 cors 来解决它