java后台处理同名cookie

本文探讨了Java后台遇到同名Cookie问题的处理方法,包括分析原因、增删改查的操作可行性。由于后台无法在未知path下删除Cookie,作者提出通过检查Cookie的path来区分并选择正确的Cookie。在火狐浏览器上,同一个名字的Cookie,path更短的会排在前面,这提供了一种可能的解决方案,但需要验证不同浏览器的行为一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅谈java后台处理同名cookie

最近开发过程中遇到了一个同名cookie的问题,目前是提示用户同名cookie,让他们通过自己清除浏览器达到清除同名cookie的目的。因为后台在未知path的情况下是删不了对应的cookie的,只能等他自动过期或者用户自己手动清除浏览器缓存

分析后有两种可能造成同名cookie

1、使用postman等工具写入cookie
2、子项目种了同名cookie(要去定位,去找)

 Cookie[] cookies = request.getCookies();
    if (ArrayUtils.isNotEmpty(cookies)) {
      for (Cookie cookie : cookies) {
        String cookieName = cookie.getName();
        if (names.contains(cookieName)) {
         //抛个异常
         throw new MyException("用户:" + userName + " Cookie:" + cookieName + "重复");         
        }
       names.add(cookieName);
      }
    }

场景如下:其中场景一为本人种的cookie,场景2为未知的cookie

场景12
域名AA
path/未知,但不是根路径
keyusernameusername
value123未知

我需要在代码逻辑中找到自己种的cookie对应的key和value。
首先要申明一下java后台只能拿到cookie的key和value,其他的值一律拿不到

考虑增删改查是否可行

直接pass,没有再加一个cookie的必要

我们来看一下cookie的删除是什么样的

Cookie[] cookies=request.getCookies();

for(Cookie cookie: cookies){

cookie.setMaxAge(0);

cookie.setPath(“/”);

response.addCookie(cookie);

}

要setPath才能找到要删除的那个cookie!!!!
cookie的删除是将原来的值设为null
那么问题就来了,我要删cookie也只能删自己的cookie我知道他的path是什么,但是没有办法删除场景2的未知path对应的cookie
pass

改其实和删差不多,只是多了一个setValue,改要生效也需要知道cookie的path才行。
pass

只剩查了,要好好探索一下,我们要怎么查

  1. 我从下面那篇文章得知,通过HttpServletRequest取得的Cookie[]cookies数组中同名Cookie排在后面的path更短,也就是更靠近根目录。

    https://blog.youkuaiyun.com/lqadam/article/details/52945166

    目前在火狐上是成立的,那么是可以解决我只想查根目录的cookie的值。但是这种方法不同浏览器的策略是否不同,需要再验证一下。

  2. 每次自己写入的cookie进行保存,解析RequestContext的时候当有重名情况出现的时候,和自己保存的数据进行比对,选择和自己保存数据相同的那份。

  3. 要是有更好的查询办法麻烦大家告诉我啦~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值