java 如何发送cookie
发送 Cookie 的方法
在 Java 中发送 Cookie 可以通过多种方式实现,具体取决于使用的技术栈(如原生 HttpURLConnection、Apache HttpClient、Spring 等)。以下是几种常见场景的实现方法:
使用 HttpURLConnection(原生 Java)
通过 HttpURLConnection 设置请求头的 Cookie 字段:

URL url = new URL("http://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Cookie", "name=value; name2=value2");
connection.connect();
使用 Apache HttpClient
通过 HttpClient 的 HttpContext 或直接设置请求头:

CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("http://example.com");
// 方法1:通过请求头设置
request.setHeader("Cookie", "name=value; name2=value2");
// 方法2:通过 CookieStore(推荐)
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("name", "value");
cookie.setDomain("example.com");
cookieStore.addCookie(cookie);
HttpContext context = HttpClientContext.create();
context.setCookieStore(cookieStore);
CloseableHttpResponse response = client.execute(request, context);
使用 Spring RestTemplate
通过 RestTemplate 和 ClientHttpRequestInterceptor 发送 Cookie:
RestTemplate restTemplate = new RestTemplate();
restTemplate.getInterceptors().add((request, body, execution) -> {
request.getHeaders().add("Cookie", "name=value");
return execution.execute(request, body);
});
String response = restTemplate.getForObject("http://example.com", String.class);
使用 Servlet(服务端设置 Cookie)
在 Servlet 中通过 HttpServletResponse 添加 Cookie:
Cookie cookie = new Cookie("name", "value");
cookie.setMaxAge(3600); // 过期时间(秒)
cookie.setPath("/"); // 生效路径
response.addCookie(cookie);
注意事项
- 作用域:确保 Cookie 的
Domain和Path与目标 URL 匹配。 - 安全性:敏感 Cookie 建议设置
Secure和HttpOnly属性。 - 多值 Cookie:多个 Cookie 需用分号分隔(如
name1=value1; name2=value2)。
根据具体需求选择合适的方法,推荐使用 CookieStore(Apache HttpClient)或拦截器(Spring)管理 Cookie 生命周期。






