java 如何发送cookies

java 如何发送cookies

作者:Rhett Bai发布时间:2026-02-04阅读时长:0 分钟阅读次数:23

用户关注问题

Q
Java中如何在HTTP请求中附加Cookies?

我想在使用Java发送HTTP请求时带上Cookies,有什么简单有效的方法吗?

A

通过HttpURLConnection设置Cookies

可以通过HttpURLConnection的setRequestProperty方法来设置“Cookie”请求头,从而在HTTP请求中附加Cookies。示例如下:

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Cookie", "key1=value1; key2=value2");

这里将多个cookie用分号分隔,放入请求头即可。

Q
使用Java HttpClient发送请求时,怎样管理Cookies?

Java的HttpClient库是怎样处理和发送Cookies的?我是否需要手动管理这些Cookies?

A

HttpClient自动管理Cookies和自定义CookieStore

Apache HttpClient默认支持Cookie管理,可以自动保存和发送服务器发回的Cookies。如果需要手动管理,可以创建一个CookieStore,添加自定义Cookie,并将其设置到HttpClient的上下文中,例如:

CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("name", "value");
cookie.setDomain("example.com");
cookie.setPath("/");
cookieStore.addCookie(cookie);

CloseableHttpClient client = HttpClients.custom()
    .setDefaultCookieStore(cookieStore)
    .build();

这样确保请求会携带指定的Cookies。

Q
Java Servlet端如何读取和发送Cookies?

作为服务端开发,怎样在Java Servlet中读取客户端Cookies,以及如何在响应中设置Cookies?

A

Servlet的Cookie读取与响应设置方法

在Servlet中,可以通过HttpServletRequest的getCookies方法获得客户端发送的Cookies数组,遍历后即可读取其中的值。

Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        String name = cookie.getName();
        String value = cookie.getValue();
        // 进行处理
    }
}

想在响应中发送新的Cookie,可以使用HttpServletResponse的addCookie方法:

Cookie newCookie = new Cookie("sessionId", "123456");
newCookie.setMaxAge(3600); // 存活时间一小时
response.addCookie(newCookie);