Dou*_*kem 130 java cookies servlets
如何删除Java servlet中的cookie?
我试过这个:http: //www.jguru.com/faq/view.jsp?EID = 42225
编辑:以下现在成功运作它似乎是以下的组合:
response.setContentType("text/html");
Run Code Online (Sandbox Code Playgroud)
和
cookie.setMaxAge(0);
Run Code Online (Sandbox Code Playgroud)
在我做之前:
//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(-1);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);
Run Code Online (Sandbox Code Playgroud)
根据文档关闭浏览器时,cookie会过期.
负值表示cookie不会持久存储,并在Web浏览器退出时被删除.零值会导致cookie被删除.
要使Cookie过期的完整工作代码段是:
//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);
Run Code Online (Sandbox Code Playgroud)
Cur*_*son 130
MaxAge为-1表示您希望cookie在会话期间保持不变.您想要将MaxAge设置为0.
从API文档:
负值表示cookie不会持久存储,并在Web浏览器退出时被删除.零值会导致cookie被删除.
小智 57
在我的环境中,以下代码有效.虽然乍看上去多余的,cookies[i].setValue("");并且cookies[i].setPath("/");是必要的,正确清除该cookie.
private void eraseCookie(HttpServletRequest req, HttpServletResponse resp) {
Cookie[] cookies = req.getCookies();
if (cookies != null)
for (Cookie cookie : cookies) {
cookie.setValue("");
cookie.setPath("/");
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
}
Run Code Online (Sandbox Code Playgroud)
bro*_*ofa 12
请记住,cookie实际上是由它的名称,路径和域的元组定义的.如果这三者中的任何一个不同,或者有多个同名的cookie,但定义的路径/域可能仍然对相关URL可见,您仍然会看到该cookie在请求中传递.例如,如果网址为" http://foo.bar.com/baz/index.html ",您会看到在bar.com或foo.bar.com上定义的任何Cookie,或路径为"/"或"/巴兹".
因此,只要客户端中只定义了一个cookie,其名称为"SSO_COOKIE_NAME",域名为"SSO_DOMAIN",路径为"/",那么您看起来应该可以使用.如果有任何具有不同路径或域的cookie,您仍会看到发送给客户端的cookie.
要调试此功能,请进入Firefox的首选项 - >安全选项卡,然后搜索包含SSO_COOKIE_NAME的所有Cookie.单击每个以查看域和路径.我打赌你会在那里找到一个并不是你所期待的那个.
Cookie[] cookies = request.getCookies();
if(cookies!=null)
for (int i = 0; i < cookies.length; i++) {
cookies[i].setMaxAge(0);
}
Run Code Online (Sandbox Code Playgroud)
那不起作用吗?如果发回响应,这将删除所有cookie.
这是我之前有效使用的代码,"/"作为strPath参数传递.
public static Cookie eraseCookie(String strCookieName, String strPath) {
Cookie cookie = new Cookie(strCookieName, "");
cookie.setMaxAge(0);
cookie.setPath(strPath);
return cookie;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
194877 次 |
| 最近记录: |