2

我想删除 JavaFX 网络引擎生成的一些特定的仅 HTTP cookie。Chrome 浏览器允许我们删除 httponly cookie,这意味着这可以通过编程方式实现。

我可以使用删除所有 cookie

java.net.CookieManager manager = new java.net.CookieManager();
manager.getCookieStore().removeAll();

使用这个用户也从我的应用程序中注销。我希望能够删除除为我的应用程序生成的 cookie 之外的所有 cookie。或者是否可以使用 javascript 删除相同的 cookie。

4

2 回答 2

6

任何正在寻找解决方案的人。这里是。在 javafx 的 main 方法的开头设置此项。

cookieManager =  new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);

然后在任何事件上(我在单击按钮时完成)调用这个

CookieStore cookieJar =  Main.cookieManager.getCookieStore();
List<HttpCookie> cookies =  cookieJar.getCookies();

for (HttpCookie ck: cookies) {
if(ck.getName().equals("JSESSIONID")){
          System.out.println("JSESSIONID");
   }else{
          ck.setMaxAge(0);
          System.out.println("CookieHandler retrieved cookie: " + ck);
   }
}

我希望这对某人有所帮助,因为我整天都在寻找解决方案。

于 2015-04-15T12:05:49.153 回答
0

根据文档 getCookies()

返回一个数组,其中包含客户端随此请求发送的所有 Cookie 对象。如果没有发送 cookie,则此方法返回 null。

因此,您应该能够遍历返回的 cookie 列表并识别要删除的 elegible(s):

Cookie[] cookies = request.getCookies();

for (int i = 0; i < cookies.length; i++) {
  String name = cookies[i].getName();
  String value = cookies[i].getValue();
}

如果没有,您可以覆盖 cookie 添加它addCookie(Cookie)

于 2015-04-15T09:33:00.273 回答