P粉5140018872023-08-30 16:22:05
這可能是因為對於跨網域的cookie,您設定了{sameSite:true}和{secure:true},但在您的範例中,您是在http://localhost上進行的,因此不會設定任何cookie。請參考以下連結以取得要求。
也要設定正確的頭部,例如Access-Control-Allow-Credentials,Access-Control-Allow-Origin,Access-Control-Allow-Headers
您可以使用mkcert來參考在本機上進行安全連線。
我還建議在前端和後端使用相同的頂級網域,並使用子網域。
這裡還要注意的一點是,如果域名中有端口,我認為Chrome不會設置cookie,請嘗試一下。
P粉6474494442023-08-30 09:52:10
我成功解決了這個問題,以便後來的人可以找到答案。我將cookieparser的聲明移到了初始化sequelize連接的位置之前。我還在我的axios post請求中新增了withCredentials選項。透過這兩個步驟,我的cookie現在都已正確設定並且可以存取。
const express = require("express"); require("dotenv").config(); const cors = require("cors"); const app = express(); app.use(express.json()); app.use(express.urlencoded({ extended: true })); const cookieParser = require("cookie-parser"); app.use(cookieParser()); const port = process.env.PORT || 8080; const lib = require("./lib"); //这是所有自定义函数 const sql = require("./database");
onSubmit() { let loginInfo = { email: email.value, password: password.value, }; axios .post("http://localhost:3000/user/login", loginInfo, { withCredentials: true, }) .then(() => $q.notify({ color: "green-4", textColor: "white", icon: "cloud_done", message: "帐户创建成功!", }) ) .catch(() => $q.notify({ color: "red-5", textColor: "white", icon: "warning", message: "电子邮件或用户名已被使用!", }) ); },