文章目录
接上一篇鉴权微服务中间留下的问题,专门来分析解决一下这个问题,首先我们登录,然后查看cookie:
却发现cookie中空空如也,这是为什么?
1 问题分析
我们在之前测试时,清晰的看到了响应头中,有Set-Cookie属性
为什么在这里却什么都没有?
我们之前在讲cors跨域时,讲到过跨域请求cookie生效的条件:
- 服务的响应头中需要携带Access-Control-Allow-Credentials并且为true。
- 响应头中的Access-Control-Allow-Origin一定不能为*,必须是指定的域名
- 浏览器发起ajax需要指定withCredentials 为true
看看我们的服务端cors配置:
没有任何问题。
我们再来仔细看一下区别:调试的时候访问的是http://localhost:8087/login
,但是浏览器访问的却是http://api.leyou.com/api/auth/ogin
,那我们再用这个地址调试一次:
现在我们找到问题了!——路径问题!
但是路径变化会引起什么变化呢?——网关问题或者nginx问题二者都有可能产生问题,要逐一排查
2 跟踪CookieUtils
除了上面那两个原因,其次我们想,写cookie这个代码有没有问题,为什么刚才有现在又没有了呢?我们写cookie使用的是工具类:CookieUtils
,先看一下可以正常生成的cookie信息:
返回header:
LY_TOKEN=eyJhbGciOiJSUzI1NiJ9.eyJpZCI6MzIsInVzZXJuYW1lIjoiZGlhbmVtYXgiLCJleHAiOjE1NTUzMzE2MjF9.cYjoy_DaqlYx5GumxU7TExtENS1KBvNg_Sjdo1PBcW_tjYBu1xXtWfkwQV1_y03ttDcvs0PF3fQWkJOkmICv3n8Dy0do_M6KMMjG7fcNW-Mmk2blunOhw69o9ZSx0W0MSNGVMjR38OLyi9OumG3FzX2XjRB6GO_veBwMB5cmU; Domain=localhost; Path=/;HttpOnly
我们发现cookie的 domain
属性似乎不太对。