将cookie设置为null不在java中工作

时间:2014-09-26 09:02:17

标签: java html5 cookies session-cookies setcookie

我想删除域名和上下文路径的cookie为" /"它在我的云服务器上运行。

我有以下代码用于清除云服务器中的cookie

    Cookie cookie = new Cookie(cookieName, null);// cookieName = TEST_COOKIE
    String cookiePath = request.getContextPath();
    cookie.setPath(cookiePath); // path = "/"
    cookie.setDomain("mydomain.com");
    cookie.setMaxAge(0);
    response.addCookie(cookie);

如果我在浏览器中注意到cookie,我有以下详细信息

cookie name = "TEST_COOKIE"  value  = "MUZJd3NuNDhy"  domain = "mydomain.com" path = "/"

在我的localhost中,上面的代码工作正常,没有设置域名。即使我尝试使用无效的空域名。不知道如何继续这个,方向非常感谢。

编辑 - 在localhost下没有域的代码下面可以正常使用上下文路径作为/ MyApp。

    Cookie cookie = new Cookie(cookieName, null);
    String cookiePath = request.getContextPath();
    cookie.setPath(cookiePath); // path = "/"
    cookie.setMaxAge(0);
    response.addCookie(cookie);

当我删除了contextPath" / MyApp"时,它也停止在localhost中工作,在我的云服务器中,我的上下文路径是" /"

2 个答案:

答案 0 :(得分:1)

经过大量调试后,我发现request.getContextPath在我的远程服务器和jave doc

中返回空字符串而不是“/”
 * Returns the portion of the request URI that indicates the context
 * of the request. The context path always comes first in a request
 * URI. The path starts with a "/" character but does not end with a "/"
 * character. For servlets in the default (root) context, this method
 * returns "". The container does not decode this string.

因为我有根上下文,该方法返回空字符串而不是“/”,我已经通过下面的代码修复它,它现在正在工作。

    if (cookiePath.isEmpty()) {
        cookie.setPath("/");
    } else {
        cookie.setPath(cookiePath);
    }

答案 1 :(得分:0)

您无法将Cookie设置为null,但可以将其删除(即:当您下次尝试获取时,它将返回null)。

只需更改第一行:

Cookie cookie = new Cookie(cookieName, "");
String cookiePath = request.getContextPath();
cookie.setPath(cookiePath); // path = "/"
cookie.setDomain("mydomain.com");
cookie.setMaxAge(0);
response.addCookie(cookie);