gpt4 book ai didi

java - 在 servlet 中删除 cookie 时出现问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:03 24 4
gpt4 key购买 nike

我试图用这段代码删除 servlet 中的 cookie

Cookie minIdCookie = null;

for (Cookie c : req.getCookies()) {
if (c.getName().equals("iPlanetDirectoryPro")) {
minIdCookie = c;
break;
}
}

if (minIdCookie != null) {
minIdCookie.setMaxAge(0);
minIdCookie.setValue("");
minIdCookie.setPath("/");
res.addCookie(minIdCookie);
}

res.flushBuffer();

但这不会产生任何影响,也不会改变 cookie 属性。

我也试过在这个 servlet 中添加一个 cookie,效果很好。

为什么我无法更改现有 cookie 的属性。

最佳答案

你不应该改变路径。这会改变 cookie 身份。如果 cookie 被设置为类似 /foo 的路径,并且您将其更改为 /,则客户端将不再将更改后的 cookie 与原始 cookie 相关联。 Cookie 由名称和路径标识。

只需将 maxage 设置为 0 就足够了。

Cookie[] cookies = request.getCookies();
if (cookies != null) { // Yes, this can return null! The for loop would otherwise throw NPE.
for (Cookie cookie : cookies) {
if (cookie.getName().equals("iPlanetDirectoryPro")) {
cookie.setMaxAge(0);
response.addCookie(cookie);
break;
}
}
}

您还需要确保您正在读取/测试后续 请求中的 cookie,而不是当前请求中的 cookie。

关于java - 在 servlet 中删除 cookie 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3466267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com