请求中包含 Cookie header,但表示 returns 空 Cookie(使用 Amazon Load Balancer)

Cookies included in request header, but express returns empty cookies (using Amazon Load Balancer)

我正在 fetch 从我的前端到我的 express 后端。但是将 req.cookies 表示为 ''(空)。我正在使用 cookieParser。

为什么 express 找不到 cookie,即使浏览器显示正在发送 cookie?

注意:我正在使用负载均衡器转发的 cookie,它会进行身份验证并发送 session。

前端

    fetch(`${MY_URL}/logout`, {
      credentials: 'include',
    })

NodeJS

const cookieParser = require("cookie-parser");
app.use(cookieParser());

app.get("/logout", (req, res, next) => {
  console.log(req.headers) // see below
  console.log(JSON.parse(JSON.stringify(req.cookies))); // logs {}
  console.log(JSON.parse(JSON.stringify(req.signedCookies))); // logs {}

  // do stuff with cookie
});

Headers

{
  ...
  cookie: ''
}

Headers 中的 Cookie 是一个空字符串

网络选项卡:

成功了。最终解决方案是负载平衡器自动将这些 headers 静默转发到后端。对于我的 /logout api,我没有尝试从 headers 中获取 cookie,而是无论如何设置它们。像这样:

app.get('/logout', (req, res) => {
  res.cookie("AWSELBSessionCookie", "", {
    maxAge: -1,
    expires: Date.now(),
    path: '/'
  }

  res.setHeader("Cache-Control", "must-revalidate, no-store, max-age=0");
  res.setHeader("Pragma", "no-cache");
  res.setHeader("Expires", -1);
  res.redirect("https://my-login-page.com");
})