我想创建一个 JSP 来删除适用于当前页面的所有 cookie(因此,如果重置页面驻留在站点上是 www.dev.example.com,它将获取所有 cookie: www.dev.example.com
, .dev.example.com
, . example.com
)和服务器端,将它们全部删除。
这个代码是什么?
参考RFC 2109,你只需要在你的 HTTP 响应中使用 Set-Cookie 标头,并将你想要清除的 cookie 设置为空值。比如
Set-Cookie: ssid=
更新:我不熟悉 JSP,所以我使用 PHP 和 Javascript 例如,假设您的 cookie 中没有HttpOnly属性。
我使用此 PHP 代码设置 cookie,您可以将此 PHP 脚本上传到您的 Web 服务器 www.yourserver.com/setcookie.php
<?php
setcookie('name', 'li');
?>
我使用此HTML 文件清除您的 cookie,再次将此 HTML 文件上传到您的网络服务器 www.yourserver.com/clearcookie.html
<script>
function deleteAllCookies() {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
deleteAllCookies();
</script>
如果您不想删除,那么另一种选择是将它们存储为持久 cookie
set MaxAge = -1
MaxAge 为 -1 表示您希望 cookie 在会话期间持续存在。您想将 MaxAge 设置为 0。
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.
另一个是
Iterate all cookies in servlet/Scriptlet and set all Cookies Value NULL .
还有一个是
use javascript code to remove all cookies.
使用以下代码。
<body>
<%
if(request.getParameter("removeCookie") != null){
for(Cookie cookie : request.getCookies()){
if(!cookie.getName().equals("JSESSIONID")){
cookie.setMaxAge(0);
cookie.setValue("");
cookie.setPath("/");
response.addCookie(cookie);
}
}
}
%>
<form action="#" method="get">
<input type="submit" id="removeCookie" name="removeCookie" value="Remove cookie" >
</form>
</body>