我想删除域名和上下文路径的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中工作,在我的云服务器中,我的上下文路径是" /"
答案 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);