gpt4 book ai didi

java - 在 Java 中管理 session cookie

转载 作者:行者123 更新时间:2023-11-30 03:28:15 24 4
gpt4 key购买 nike

我正在一个 java web 应用程序中工作,该应用程序不应允许用户在 2 个不同的选项卡中打开它,并且我正在使用 session cookie。它似乎在大多数情况下工作正常,但问题是浏览器退出时cookies不会被清除。这就是我设置 cookie 的方式:

String sCookie = "mycookie=true;Path=/;Domain=.mydomain.com;HttpOnly";
if (!response.containsHeader("Set-Cookie")) {
response.setHeader("Set-Cookie", sCookie);
} else {
response.addHeader("Set-Cookie", sCookie);
}

据我了解,如果我不指定 Expires 字段,则应在浏览器关闭时删除 cookie。这是我验证 cookie 是否存在的方法:

Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if ("mycookie".equals(cookie.getName()) && Boolean.valueOf(cookie.getValue())) {//some error}}

这段代码有问题吗?也就是说,我可以使用 response.setHeader 设置 cookie,然后使用 request.getCookies() 检查它吗?有时我在手动删除 cookie 时遇到问题,然后当我重新启动浏览器时问题仍然存在。

这就是我手动删除cookie的方式(在选项卡关闭时):

String sCookie = "mycookie=;Path=/;Domain=.mydomain.com;HttpOnly";
if (!response.containsHeader("Set-Cookie")) {
response.setHeader("Set-Cookie", sCookie);
} else {
response.addHeader("Set-Cookie", sCookie);
}

提前致谢
更新
这就是我创建 cookie 的方式:

Cookie c = new Cookie("mycookie","true");
c.setDomain(".mydomain.com");
c.setPath("/");
c.setValue("true");
response.addCookie(c);


这就是我删除 cookie 的方法:

for (Cookie c : request.getCookies()) {
if ("mycookie".equals(c.getName())) {
c.setMaxAge(0);
c.setValue("");
}
}


但仍然无法正常工作。实际上,现在当我关闭选项卡时,cookie 不会被删除(这在我以前的版本中使用“Set-Cookie”工作得很好:S)。另一个细节是我在 Chrome 开发人员的“资源”选项卡中没有看到我的 cookie工具

最佳答案

作为一般提示,您最好使用 response.addCookie(..)方法并可能使用 Cookie.setMaxAge(-1) .

也就是说,这应该是默认值,因此为了理解问题,您应该使用 Firebug(或任何浏览器开发人员工具)来检查您的 cookie 并检查它们的最长期限。关闭浏览器之前和之后。例如。你可能还有一些剩余的 cookies 。

关于java - 在 Java 中管理 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677489/

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