1

我想创建一个 JSP 来删除适用于当前页面的所有 cookie(因此,如果重置页面驻留在站点上是 www.dev.example.com,它将获取所有 cookie: www.dev.example.com, .dev.example.com, . example.com)和服务器端,将它们全部删除。

这个代码是什么?

4

3 回答 3

0

参考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>
于 2012-04-19T01:24:13.573 回答
0

如果您不想删除,那么另一种选择是将它们存储为持久 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.
于 2012-04-19T01:37:36.560 回答
0

使用以下代码。

<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>
于 2012-04-20T10:46:44.063 回答