当我在 vercel 上部署应用程序时未发送 Cookie

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

我使用 cookies 和expressjs 编写了一个简单的身份验证程序,我的代码在 localhost 环境中运行良好,但是当部署到 Vercel 时,我的程序代码运行不佳(cookie 未发送且未在客户端浏览器上设置)

这是我的快递代码


const express = require('express');
const cors = require('cors');

const cookieParser = require('cookie-parser');



const app = express();



app.use(cors(

  {

    origin: 'https://tester-virid-seven.vercel.app/',

    credentials: true

  }

));

app.use(express.json());

app.use(express.urlencoded());

app.use(cookieParser());

app.set("trust proxy", 1);



app.get('/', (req, res) => {

  res.status(200).cookie("AUTH", "example", {

    maxAge: 900000,

    httpOnly: false,

    secure: true,

    expires: new Date(Date.now() + 1000*60)

  }).json({cookie: req.cookies.AUTH});

});



app.listen(3000, () => {

  console.info('app is running...');

});

这是客户端/前端程序代码这是客户端/前端程序代码



<!DOCTYPE HTML>

<html lang="en">

  <head>

    <meta charset="UTF-8"/>

    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>

    <title>Document</title>

  </head>

  <body>

    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

    <script>

      axios.defaults.withCredentials = true

      axios.get('https://cookie-test-theta.vercel.app/')

      .then(res => console.info(res))

      .catch(err => console.error(err));

      alert(document.cookie);

    </script>

  </body>

</html>

我希望程序代码在部署时能够正常工作(发送和设置 cookie)我希望程序代码在部署时能够正常工作(发送和设置 cookie)

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

从您的 Express 代码和 CORS 配置来看,您的前端正在 https://tester-virid-seven.vercel.app 上运行,并且您允许从该主机向在另一台主机上运行的 Express 应用程序发出请求。

您需要在 cookie 选项中添加

sameSite: 'None'
才能允许在两个不同的主机之间发送 cookie。请参阅https://expressjs.com/en/api.html#res.cookie

或者,您可以在同一主机上的一个应用程序中在 Vercel 上运行前端和后端。

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