【问题标题】:Delete specific cookies from webengine JavaFX从 webengine JavaFX 中删除特定的 cookie
【发布时间】:2015-04-15 09:25:12
【问题描述】:

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

我可以使用

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

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

【问题讨论】:

    标签: java javafx session-cookies httpcookie javafx-webengine


    【解决方案1】:

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

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

    【讨论】:

    • HeHemal,你能告诉我“Main.cookieManager.getCookieStore()”的含义吗?
    【解决方案2】:

    According to docsgetCookies()

    返回一个数组,其中包含客户端随此请求发送的所有 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();
    }
    

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

    【讨论】:

    • request.getCookies() 给了我生成的 cookie。我也想访问其他 cookie。
    猜你喜欢
    • 2015-11-17
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多