在项目调试中,我发现了两个同名同值得cookie,这种有意思得现象是怎么发生的呢?
项目环境:我有一个filter用于获取cookie。
遇到问题不要慌,直接看是如何获取cookie的,先直接看servletRequest变量。发现最开始没有cookies,其值是null。因此可以知道getCookies里面肯定别有洞天。
能发现这里的servletRequest实例是RequestFacade,发现里面去执行了这个方法。
紧跟着我们去看convertCookies干了什么事儿。里面一个是解析cookie,紧跟着就能获取到cookie了。于是我们去看parseCookies
发现里面的逻辑很简单,就是从coyoteRequest的header中解析cookie,因此我们去看coyoteRequest的header中有什么。
我们惊讶的发现,这个本身就有两个一样的cookie,难道我真的傻到自己添加两个一样的cookie给自己找问题?
其实我们这里使用的api发送工具是apifox。当你设置过一次cookie后,apifox就记录了返回来的cookie,当你再次向这个网站发送请求时,它会默认携带cookie,而我在设置里面一致写有设置cookie,故导致了出现两个同样cookie的现象。
这显然是经验不足导致的bug,但求真求实的探索更值得继续坚持。