NodeJS Set-Cookie响应标头不设置浏览器Cookie

bakd9h0s  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(128)

我在用户登录后设置cookie时遇到问题。(此问题仅在生产中出现)。My /login端点返回一个带有token和其他所需信息的cookie(如下所示)

if (isPasswordValid === true) {
        jwt.sign({ username, id: userDoc._id }, secret, (error, token) => {
          if (error) throw error;
          res.cookie("token", token, { 
            httpOnly: true, 
            domain: "https://my-frontend-url.com",
            sameSite: "none",
            secure: true,
          }).status(200).json({
            message: "User have been logged in successfully",
            id: userDoc._id,
            username,
            authorname: userDoc.authorname,
          });
        });

然后我从客户端获取端点:

const res = await fetch(`${process.env.REACT_APP_API_URL}/login`, {
      method: "post",
      credentials: "include", 
      headers: {
        "content-type": "application/json",
      },
      body: JSON.stringify({
        username,
        password,
      }),
    });

在我得到一个200的状态后,Set-Cookie响应头包含令牌,但它也有一个警告:“此通过Set-Cookie标头设置Cookie的尝试被阻止,因为其Domain属性对于当前主机URL无效。”
我还使用了cookie-parcer中间件:app.use(cookieParser());和cors middleare app.use(cors({ credentials: true, origin: ["https://my-frontend-url.com", "http://localhost:3000"], }));但仍然无法找出解决方案。
我尝试将credentials: "include",设置为fetch请求。我不得不使用cors:app.use(cors({ credentials: true, origin: ["https://my-frontend-url.com", "http://localhost:3000"], }));我也尝试配置res.cookie:res.cookie("token", token, { httpOnly: true, domain: "https://my-frontend-url.com", sameSite: "none", secure: true, })但没有任何帮助。希望得到一些帮助,谢谢!

siotufzp

siotufzp1#

将域选项设置为

{ domain: ".my-frontend-url.com" }

相关问题