从 webengine JavaFX 中删除特定的 cookie

Delete specific cookies from webengine JavaFX

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

我可以使用

删除所有 cookie
java.net.CookieManager manager = new java.net.CookieManager();
manager.getCookieStore().removeAll();

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

删除相同的 cookie

According to docs getCookies()

Returns an array containing all of the Cookie objects the client sent with this request. This method returns null if no cookies were sent.

因此,您应该能够遍历返回的 cookie 列表并确定要删除的 elegible:

Cookie[] cookies = request.getCookies();

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

如果否,您可以使用 addCookie(Cookie)

覆盖添加它的 cookie

任何正在寻找解决方案的人。这里是。 在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);
   }
}

我希望这对某人有所帮助,因为我花了一整天的时间寻找解决方案。