【问题标题】:Cookies included in request header, but express returns empty cookies (using Amazon Load Balancer)请求标头中包含 Cookie,但 express 返回空 Cookie(使用 Amazon 负载均衡器)
【发布时间】:2020-12-11 23:47:19
【问题描述】:

我正在从我的前端到我的快递后端做fetch。但是将日志req.cookies 表达为''(空)。我正在使用 cookieParser。

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

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

前端

    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
});

标题

{
  ...
  cookie: ''
}

Headers 中的 Cookie 是一个空字符串

网络标签:

【问题讨论】:

    标签: express http cookies fetch aws-load-balancer


    【解决方案1】:

    得到这个工作。最终解决方案是负载均衡器自动将这些标头静默转发到后端。对于我的/logout api,我没有尝试从标题中获取 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");
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 2020-05-26
      • 2016-06-04
      • 2013-08-26
      • 1970-01-01
      • 2018-02-01
      相关资源
      最近更新 更多