nuxt 服务未使用 Express

问题描述 投票:0回答:1

我有 3 种不同的服务。

  1. 前端,您从浏览器中看到的内容
  2. 在端口 3001 上运行的身份验证服务
  3. 在端口 3002 上运行的管理服务

如果您的身份验证正确,我会在身份验证服务上设置 cookie

res.cookie('tmC', JSON.stringify(cookieObj), {
        secure: process.env.NODE_ENV === 'production',
        httpOnly: true,
        maxAge: 4 * 60 * 60 * 1000,
      })

在我的 nuxt 配置的前端

axios: {
    // baseUrl: process.env.NUXT_ENV_API_URL
    credentials: true,
    init(axios) {
      axios.defaults.withCredentials = true
    },
  },

在我的服务中我有这样的cors设置

app.use(cookieParser())
app.use(bodyParser.json())
const corsOptions = {
  origin: 'http://localhost:3000',
  credentials: true,
  methods: ['GET', 'HEAD', 'PUT', 'POST'],
  allowedHeaders: ['Content-Type', 'Authorization'],
}
app.use(cors(corsOptions))

起源必须是 3000(前端,因为这是所有请求的起源地。无论我如何努力对抗这个问题,cookie 始终为空。如果我使用邮递员,我可以很好地看到 cookie。有什么想法吗?

node.js express cookies nuxt.js
1个回答
0
投票

Cookie 的范围通过域名确定,端口是域名的一部分。

因此,您无法从 localhost:3001 设置 cookie 并在 localhost:3000 上使用它,该 cookie 将保留在 localhost:3001 上并发送到该域的所有请求,但不会发送到 localhost:3000 或 localhost:3002

您需要让所有内容都在同一域下运行,您可以使用 nginx 反向代理(每个服务都有一个位置)来实现

© www.soinside.com 2019 - 2024. All rights reserved.