express跨域名请求,chrome无法显示set-cookie?

发布于 2022-09-11 16:25:14 字数 1283 浏览 48 评论 0

express搭建的后台
跨域名请求,chrome浏览器network中无法查看到set-cookie的请求头,但是edge可以。
然而虽然chrome无法查看到set-cookie,但是第二次请求后台却可以从request中读取到之前设置的cookie。
跨域的请求头已经设置,ajax也设置了withCredentials:true.
chrome下的请求
chrome下的请求

后台可以获取到cookie
后台可以获取到cookie

edge下的请求
edge下的请求
edge发出的请求,后台也可以正常获取cookie
edge下的请求

express中的代码

router.post('/login',function(req,res) {
    var {username, password} = req.body;
    var user = new User({name:username,pw:password});
    userService.query(user,function(user) {
        var result = new ResResult({code:1,data:user});
        console.log('Cookies: ', req.cookies)
        // Cookies that have been signed
        console.log('Signed Cookies: ', req.signedCookies)        
        res.cookie("user",user.name,{
            sameSite: false
        })
        res.json(result);
    })
})

但是还有费解的是,如果不跨域名而只是端口号不一样,chrome中可以正常显示set-cookie出来
chrome不跨域名,端口号不一样

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

终弃我 2022-09-18 16:25:14

我和你简直一模一样,后端
access-control-allow-origin
access-control-allow-credentials
也都设置了,前端 ajax的withCredentials也设置了,但就是在network中死活看不到 set-cookie和cookie,而firefox却可以看到

几味少女 2022-09-18 16:25:14

用fiddler查看该请求头,的确是有set-cookie字段的
fiddler截图
既然的确设置了cookie,并且之后的请求也能够获取到这个cookie,那看来是chrome故意隐藏了这个字段。
暂且先把这口锅甩chrome身上,等以后有了其他结论再来翻案。

一页 2022-09-18 16:25:14

差点点错点成踩了?

我怀疑这是chrome有意为之的,因为跨域的cookie无法用js操作,所以意义不大。

真要看,可以在application里面看。

凉城 2022-09-18 16:25:14

跨域了,同源策略

苏辞 2022-09-18 16:25:14

ajax credentials

如梦亦如幻 2022-09-18 16:25:14

就是同源策略,放到同域名不同端口下或者子域名下可以正常操作。不同域名下是不能操作的。
你这里可以试试用2个不同的域名尝试一下,线上和localhost是不一样的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文