node.js - 为什么浏览器不能存储cookies?
问题描述
目前,我正在进行一个单独的项目,但我遇到了与标题相同的问题。
客户端在使用 HTTPS 进行反应。
服务器端使用 HTTPS 在 Express 上。它们是跨域的。
当点击提交按钮时,下面的代码正在运行。
//client side
axios
.post('https://ohmycounty.me/user/signin', {email : "byron@google.com", password: "example", {
withCredentials: true,
})
//server side
app.use(session({
secret: 'example',
resave: false,
saveUninitialized: true,
cookie: {
sameSite: 'none',
secure: true
}
}));
app.use(cors({
origin: ['https://ohmycounty.xyz'], // client app's url
credentials: true
}));
const { users } = require('../../models');
module.exports = {
post: (req, res) => {
console.log(req.session.userid)
const {
email,
password
} = req.body;
let session = req.session;
users.findOne({
where: {
email: email,
password: password
}
}).then(result => {
if (!result) res.status(401).send(JSON.stringify({
status: false
}))
else {
session.userid = result.id;
res.status(201).json({
id: result.id
})
}
})
}
}
我在 chrome 开发者工具应用程序中找不到任何 connect.sid。
等待有经验的开发者的建议。
任何意见都可以。
请帮我。
解决方案
当且仅当通过 HTTPs 建立连接时,才应设置安全属性。所以如果你把它改成false,它应该可以在开发环境中工作。
cookie: {
secure: false
}
来自快速会话文档:
cookie.secure 指定 Secure Set-Cookie 属性的布尔值。如果为真,则设置 Secure 属性,否则不设置。默认情况下,未设置 Secure 属性。
请注意,将此设置为 true 时要小心,因为如果浏览器没有 HTTPS 连接,兼容的客户端将来不会将 cookie 发送回服务器。
推荐阅读
- c# - c# ToastNotification 启动 url 不在默认浏览器中
- python - 从 numpy 数组创建栅格,从 csv 文件中获取值
- java - 静态工厂方法 - 返回任何子类型
- sql - SQL:如何从一个链接到另一个表的表中找到描述值?
- html - 加载时我的网站字体大小会自动更改
- excel - 在统计上创建非线性方程的上限和下限斜率
- python - 使用 Boto 3 将文件从 AWS S3 传输到 SFTP
- wordpress - 如何将 Wordpress 仪表板登录网址更改为网站网址?
- html - 使表格的第一列变粘
- kentico - 我可以根据宏使母版页(Kentico 11 Portal Engine)上的 Doctype 动态化吗?