2

JavaFX Web エンジンによって生成された特定の HTTP のみの Cookie をいくつか削除したいと考えています。Chrome ブラウザーでは、httponly Cookie を削除できます。つまり、これはプログラムで可能です。

を使用してすべてのCookieを削除できます

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

これを使用すると、ユーザーはアプリケーションからもログアウトされます。アプリケーション用に生成されたものを除くすべての 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 のリストを繰り返し処理し、削除する対象を特定できるはずです。

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 に答える