Maison > Questions et réponses > le corps du texte
P粉5140018872023-08-30 16:22:05
Cela peut être dû au fait que pour les cookies inter-domaines, vous définissez {sameSite : true} et {secure : true}, mais dans votre exemple, vous le faites sur http://localhost donc aucun cookie ne sera défini. Veuillez vous référer au lien ci-dessous pour connaître les exigences.
Définissez également les en-têtes corrects tels que Access-Control-Allow-Credentials, Access-Control-Allow-Origin, Access-Control-Allow-Headers
Vous pouvez utiliser mkcert pour faire référence à l'établissement d'une connexion sécurisée sur localhost.
Je recommande également d'utiliser le même domaine de premier niveau sur le frontend et le backend, et d'utiliser des sous-domaines.
Une autre chose à noter ici est que je ne pense pas que Chrome définira le cookie s'il y a un port dans le nom de domaine, veuillez l'essayer.
P粉6474494442023-08-30 09:52:10
J'ai résolu ce problème avec succès afin que d'autres qui viendront plus tard puissent trouver la réponse. J'ai déplacé la déclaration de cookieparser juste avant l'endroit où la connexion séquelle est initialisée. J'ai également ajouté l'option withCredentials à ma demande de publication axios. Avec ces deux étapes, mes cookies sont désormais correctement paramétrés et accessibles.
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: "电子邮件或用户名已被使用!", }) ); },