使用 Jersey 在 NewCookie 中设置 httpOnly

Set httpOnly in NewCookie using Jersey

我想在 Jersey 创建的 NewCookie 上设置 httpOnly。

我正在为 Jersey 使用以下库:

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.19.4</version>
        </dependency>

这里使用 javax.ws.rs:jsr311-api:1.1.1 似乎不支持 NewCookie 中的 httpOnly。

如果我想要一个 httpOnly cookie,我应该将哪个 Jersey 库与 Tomcat 一起使用?

您需要使用 JAX-RS/Jersey 2.x 为此,请使用以下依赖项

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.32</version>
</dependency>

如果需要支持JSON/POJO映射,添加以下内容

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.32</version>
</dependency>

您还应该删除当前正在使用的任何用于 Jersey 1.x 的依赖项。离开它们可能会导致一些冲突并导致您的应用程序无法运行。如果您发现需要 Jersey 的任何其他功能需要其他 jar,请确保使用相同的版本。

注意:如果出于任何原因,您必须坚持使用 Jersey 1.x,只需通过发送 Set-Cookie response header. When the browser sends it back to the server, is in the form of a Cookie request header. So you could use cookies without needing the actual NewCookie and Cookie classes that JAX-RS 2.x offers by simple working with headers. See Using HTTP cookies.