Rumah > Soal Jawab > teks badan
P粉5140018872023-08-30 16:22:05
Ini mungkin kerana untuk kuki merentas domain anda menetapkan {sameSite: true} dan {secure: true}, tetapi dalam contoh anda, anda melakukannya di http://localhost jadi tiada kuki yang akan ditetapkan. Sila rujuk pautan di bawah untuk keperluan.
Tetapkan juga pengepala yang betul seperti Access-Control-Allow-Credentials, Access-Control-Allow-Origin, Access-Control-Allow-Headers
Anda boleh menggunakan mkcert untuk merujuk kepada membuat sambungan selamat pada localhost.
Saya juga mengesyorkan menggunakan domain peringkat atas yang sama pada bahagian hadapan dan belakang serta menggunakan subdomain.
Satu lagi perkara yang perlu diperhatikan di sini ialah saya tidak fikir Chrome akan menetapkan kuki jika terdapat port dalam nama domain, sila cuba.
P粉6474494442023-08-30 09:52:10
Saya berjaya menyelesaikan masalah ini supaya orang lain yang datang kemudian dapat mencari jawapannya. Saya mengalihkan pengisytiharan cookieparser sebelum ini di mana sambungan sekuel dimulakan. Saya juga menambahkan pilihan withCredentials pada permintaan pos axios saya. Dengan kedua-dua langkah, kuki saya kini ditetapkan dengan betul dan boleh diakses.
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: "电子邮件或用户名已被使用!", }) ); },