Http请求Cookie失效问题记录
阿昌 Java小菜鸡

Http请求Cookie失效问题记录

一、问题现象

在开发功能的过程中,业务依赖cookie进行取之,项目进行交互时会对前端http请求携带的cookies进行解析操作,但在自测调试对过程中出现账户的授权失效的报错问题。

image

二、问题排查

arthas进行代码方法报错排查,一步一步排查到当请求打到服务器时会被一个TokenFilter拦截,在其中会在中间价取到用户上下文,用户在登录的时候会在中间件设置上下文,并在http响应中设置rsid为对应业务数据形式,如:rsid_1:2_1245652125fsadfau

在请求业务服务器时,拦截会读取http请求中的cookies中的rsid值进行跟传来的token进行对比,如果不一致就会校验失败,出现上方的报错现象。

一开始以为是rsid设置的有误,就在用户登录的接口进行排查,发现确实是set上的rsid相关的业务数据,查看浏览器cookies设置也是成功的:如下图,but只针对主账户是成功的,其rsid数据例如:rsid_1_25672jrfanf

image
针对子账户则并非如此,发现其rsid对应的值为空:
image

登陆接口其实在响应中也设置返回了cookies给前端
image
那理论上应该是会设置成功的,那为什么会value为空呢???


在经过排查时,发现cookies对应的value不能有对应的特殊字符
image

image
==当出现特殊字符就会被替换成空串==

询问GPT
image


三、总结

在cookies的使用中,要符合对应的使用规范,避免开发中出现问题;

业务解决方案:将 替换为 ^

请求不再报错,符合功能业务


 请作者喝咖啡