我试图在启动Liferay Server网页时删除cookie。该页面是完全静态的,其内容是用wigdets构建的。我对这个东西很陌生,所以我收到了一个提示创建一个新的wigded,它被加载到该页面上,它唯一的功能是删除一些特定的cookie。
所以我在这个页面上添加了一个新的wigded,让他加载了一些jsp文件,这个文件包含以下代码:
<%
Cookie[] cookies = request.getCookies();
if (cookies != null)
{
for (Cookie cookie:cookies)
{
if(cookie.getName().equals("Cookie1") || cookie.getName().equals("Cookie2"))
{
Cookie clearCookie = new Cookie(cookie.getName(), null);
clearCookie.setMaxAge(0);
clearCookie.setPath("/");
response.addCookie(clearCookie);
}
}
}
%>
到目前为止,这个部分工作。它接收来自请求对象的所有Cookie,它还找到我正在寻找的两个cookie,但是当涉及到必须替换cookie的那个部分时,没有任何变化。即使我尝试创建新的cookie,它也不起作用我认为它与响应对象有关,因为我可能不得不将它交付给某些东西。但是我怎么能实现这个目标呢?
我也尝试过这样的Javascript:
<script>
window.onload = function() {
document.cookie = "Cookie1=;Path=/";
document.cookie = "Cookie2=;Path=/";
};
</script>
问题是,我想要替换的cookie没有被替换。相反,这个脚本只是创建了第二批具有相同名称和路径的cookie,就像第一批但具有空值一样。
答案 0 :(得分:0)
以下是我们设法控制Cookie的方法。您可以创建扩展Action类的钩子。以下是代码的一部分,您可以使用。
public class ManageCookiesAction extends Action {
@Override
public void run(HttpServletRequest request, HttpServletResponse response)
throws ActionException {
Cookie[] cookies = request.getCookies();
/** Manage cookies in you scenario... **/
}
}
然后在../ resource / portal.properties
中servlet.service.events.pre=net.your.hook.class.package.ManageCookiesAction
我们使用它来管理重定向到每个用户的cookie中保存的站点(他们可以在我们的门户网站上拥有自己的主站点)在您的场景中也可能有用。祝你好运。