Node.js Express JS/Node JS:secure=true时浏览器不会设置cookie,sameSite:';无';

Node.js Express JS/Node JS:secure=true时浏览器不会设置cookie,sameSite:';无';,node.js,express,cookies,express-session,Node.js,Express,Cookies,Express Session,如果我在本地运行服务器,它会设置cookie,但当服务器在线托管时: 如果secure=false,sameSite:'none'则会出现以下错误 Cookie“connect.sid”将很快被拒绝,因为它具有 “sameSite”属性设置为“none”或无效值,但没有 “安全”属性。要了解有关“sameSite”属性的更多信息,请阅读 然后我尝试使用secure=true 如果secure=true,sameSite:'none'那么我知道它应该工作 当服务器在本地托管时,它可以工作,并且c

如果我在本地运行服务器,它会设置cookie,但当服务器在线托管时:

  • 如果secure=false,sameSite:'none'则会出现以下错误
  • Cookie“connect.sid”将很快被拒绝,因为它具有 “sameSite”属性设置为“none”或无效值,但没有 “安全”属性。要了解有关“sameSite”属性的更多信息,请阅读

    然后我尝试使用secure=true

  • 如果secure=true,sameSite:'none'那么我知道它应该工作
  • 当服务器在本地托管时,它可以工作,并且cookies被设置。 但是当它被托管在heroku中时,cookie没有设置,我也没有得到设置 错误

    客户端网站似乎不安全,但在url框中显示https

    我做错了什么

    会话配置:
    router.use(
    会议({
    曲奇:{
    安全:是的,
    最大年龄:86400,
    sameSite:“没有”,
    },
    机密:process.env.SESSION\u secret,
    resave:false,
    saveUninitialized:false,
    })
    
    );
    问题不在于expres会话,它完成了它的工作。 当响应来自第三方域时,浏览器不允许cookie


    如果您正在寻找解决方案,请尝试此npm软件包: 应发送相同的站点无


    要明确的是,浏览器并没有拒绝cookies。相反,cookies存储在发送响应的第三方域名的名称中


    它在本地托管时工作得非常好,因为请求和响应将来自同一个域(localhost)

    我也有同样的问题,我想这是因为我的域没有正确的SSL证书。因此HTTPS到HTTP转换会杀死cookie。没有设置正确的SSL,仍然没有保存cookie。请确保服务器上的访问控制允许源未设置为通配符*。事实上我发现了。浏览器确实在设置cookie,但我t没有在客户端域中设置,而是在服务器域名中设置。我尝试在express session字段中设置domain字段,但浏览器刚刚拒绝了cookie。显然,如果cookie的域值与服务器的域不同,浏览器会将其视为无效cookie。这不是express session的错误,浏览器是罪魁祸首。因此,最好在REST API中使用JWT令牌进行身份验证。问题是,当我设置SameSIte none时,是的,它正在被设置,但当我设置安全:true时,代码根本不会将cookie发送到浏览器。不知道问题是什么。如果安全为true,则仅当web站点是安全的(已启用HTTPS)。您是否尝试在chrome中查看xhr响应?查看是否接收到cookie。否,在设置secure:true时,chrome未接收cookie。@Prashan您可以尝试使用仅限HTTP的cookie,它们更安全,并且可以避免跨站点脚本编写,根据我的经验,在正确的CORS设置ca下,credentials=true&HTTP only=true请看这篇文章