我正在尝试为我的移动应用程序实现注销功能,该应用程序使用jQuery iPhone,在客户端使用JS,在服务器端使用java。目前我要做的是清除cookie并重定向到我的index.html中的#loginpage标签(我只有一个超文本标记语言文件,其中有多个不同页面的标签)。到目前为止,我对clearCookie所做的是:
Cookie readCookie = null;
for (Cookie cookie : httpRequest.getCookies()) {
if (cookie.getName().equals("CookieForLogin")) {
readCookie = cookie;
break;
}
}
readCookie.setMaxAge(0);
httpResponse.addCookie(readCookie);但是这段代码并没有清除cookie。我已经尝试了JS的方法,即将到期日期设置为某个以前的日期,这是在网络上给出的,但它们也不起作用。另外,我没有针对HttpServletResponse的响应方法。如何清除客户端设置的cookie &以及如何重定向到特定的标记?
发布于 2013-04-12 22:34:09
Cookie绑定到特定路径。您需要确保在删除cookie时设置的路径与在创建cookie时设置的路径相同。它默认为URL中当前请求的文件夹(因此只能在同一文件夹或其所有子文件夹中可用)。您最好显式指定路径,否则它将依赖于URL中当前请求的文件夹。cookie路径信息类似于maxage,即在请求cookie报头中不可用。
假设您按如下方式创建了cookie,
Cookie cookie = new Cookie("CookieForLogin", cookieForLogin);
cookie.setPath("/somePath");
cookie.setMaxAge(maxAgeInSeconds);
// ...
response.addCookie(cookie);需要移除,如下所示:
Cookie cookie = new Cookie("CookieForLogin", null);
cookie.setPath("/somePath");
cookie.setMaxAge(0);
// ...
response.addCookie(cookie);/somePath堪称典范。您也可以只使用/,只要在这两种情况下都是相同的。
注意,这同样适用于cookie的Secure和HTTP-only标志。如果在创建cookie时将其初始设置为true,那么在删除cookie时也应将其设置为true,即默认设置为false。
也就是说,我不确定将登录的用户存储为cookie有什么用处。基本上,您还允许终端用户操作它的值。相反,只需将登录的用户存储为会话属性,并在注销时调用session.invalidate()。
发布于 2018-10-04 06:11:15
void setMaxAge(int expiry)
我们可以使用称为setMaxAge()的方法删除cookie
Cookie c = new Coookie("x", "10");如果将maxage设置为0
c.setMaxAge(0); //it causes the cookie to be deleted.如果将maxage设置为负值
c.setMaxAge(-1);
// cookie is not stored persistently and will be deleted end of the browsing session.发布于 2013-04-13 02:29:01
getMaxAge
public int getMaxAge()获取此Cookie的最大期限(以秒为单位)。默认情况下,返回-1,表示cookie将一直保存到浏览器关闭。
返回:一个整数,指定cookie的最长生存期(以秒为单位);如果为负值,则表示cookie将一直持续到浏览器关闭参见: setMaxAge(int)
//Java API文档
简而言之,您需要设置cookie年龄:
A negative value means that the cookie is not stored persistently and will be deleted when the Web browser exits.
A zero value causes the cookie to be deleted.
Cookie killMyCookie = new Cookie("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
response.addCookie(killMyCookie);https://stackoverflow.com/questions/15968276
复制相似问题