express跨域名请求,chrome无法显示set-cookie?
express搭建的后台
跨域名请求,chrome浏览器network中无法查看到set-cookie的请求头,但是edge可以。
然而虽然chrome无法查看到set-cookie,但是第二次请求后台却可以从request中读取到之前设置的cookie。
跨域的请求头已经设置,ajax也设置了withCredentials:true.
chrome下的请求
后台可以获取到cookie
edge下的请求
edge发出的请求,后台也可以正常获取cookie
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出来
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我和你简直一模一样,后端
access-control-allow-origin
access-control-allow-credentials
也都设置了,前端 ajax的withCredentials也设置了,但就是在network中死活看不到 set-cookie和cookie,而firefox却可以看到
用fiddler查看该请求头,的确是有set-cookie字段的
既然的确设置了cookie,并且之后的请求也能够获取到这个cookie,那看来是chrome故意隐藏了这个字段。
暂且先把这口锅甩chrome身上,等以后有了其他结论再来翻案。
差点点错点成踩了?
我怀疑这是chrome有意为之的,因为跨域的cookie无法用js操作,所以意义不大。
真要看,可以在application里面看。
跨域了,同源策略
ajax credentials
就是同源策略,放到同域名不同端口下或者子域名下可以正常操作。不同域名下是不能操作的。
你这里可以试试用2个不同的域名尝试一下,线上和localhost是不一样的