3

一部の Cookie (2) をリクエストから削除できません。理由がわかりません...

私はこの方法を試しました:

有効期限を 0 に、値を空白に、セキュア フラグを false に設定します 

@GET
@Path("clear-cookies")
public Response clear-cookies(@QueryParam(NEXT) String next) throws Exception {

    Viewable page = getPage();

    // Returns form and remove cookies, setting expiration time to zero.
    return javax.ws.rs.core.Response
        .ok(page)
        .cookie(new NewCookie(NEXT, next))
        .cookie(new NewCookie(FIRST, "", null, null, null, 0, false))
        .cookie(new NewCookie(SECOND, "", null, null, null, 0, false))
        .build();
}

有効期限を 0 に設定し、値を null に設定し、セキュア フラグを true に設定します

@GET
@Path("clear-cookies")
public Response clear-cookies(@QueryParam(NEXT) String next) throws Exception {

    Viewable page = getPage();

    // Returns form and remove cookies, setting expiration time to zero.
    return javax.ws.rs.core.Response
        .ok(page)
        .cookie(new NewCookie(NEXT, next))
        .cookie(new NewCookie(FIRST, null, null, null, null, 0, true))
        .cookie(new NewCookie(SECOND, null, null, null, null, 0, true))
        .build();
}
4

2 に答える 2

1

この問題は、すべての一般的なパラメーターを記述する一般的な方法で解決しました。name(="name")、path(="/")、および domain(=null) の少なくとも 3 つのパラメータが等しい必要があります。

public static NewCookie createDomainCookie(String value, int maxAgeInMinutes) {
    ZonedDateTime time = ZonedDateTime.now().plusMinutes(maxAgeInMinutes);
    Date expiry = time.toInstant().toEpochMilli();
    NewCookie newCookie = new NewCookie("name", value, "/", null, Cookie.DEFAULT_VERSION,null, maxAgeInMinutes*60, expiry, false, false);
    return newCookie;
}

set の一般的な方法で使用します。

NewCookie domainNewCookie = RsCookieHelper.createDomainCookie(token, 60);
Response res = Response.status(Response.Status.OK).cookie(domainNewCookie).build();

および削除の場合:

NewCookie domainNewCookie = RsCookieHelper.createDomainCookie("", 0);
Response res = Response.status(Response.Status.OK).cookie(domainNewCookie).build();
于 2018-06-28T20:36:15.863 に答える