解决cookie无法写入的问题

本文分析并解决了在乐优商城项目中遇到的Cookie无法写入的问题。问题源于请求路径变化导致的Host地址错误,进而影响了Cookie的Domain设置。通过追踪CookieUtils,发现请求的Host在反向代理过程中被修改。解决方案包括修改Nginx配置,确保Host头传递正确,以及调整Zuul过滤器,防止Host头被过滤,从而成功写入Cookie。
摘要由CSDN通过智能技术生成


接上一篇鉴权微服务中间留下的问题,专门来分析解决一下这个问题,首先我们登录,然后查看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属性似乎不太对。我们去Debug跟踪CookieUtils,看看到底是怎么回事&#x

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值