spring - 使用 Spring RestTemplate 调用请求时无法检索 cookie

标签 spring rest http session resttemplate

我有两个网络应用程序。第二个应用程序有一个 HttpSession,第一个应用程序知道它的 sessionid。

我正在使用 RestTemplate 通过将其 session ID 添加到 header 来从第一个应用程序向第二个应用程序发出请求。

当第二个应用程序收到请求时,我试图从请求中读取它的所有 cookie。但是,我只看到 JSESSIONID cookie,并没有得到我之前设置的所有 cookie。

假设,我在浏览器上手动访问相同的 url,我看到所有这些 cookie 都已检索。

在第一个应用程序中提出的请求:

String sessionId = "6iuvgwy5ceqzwlxh646qo0ms";//SessionId of second application
String url = "http://example.com/data/retrieve";
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("Cookie", "JSESSIONID=" + sessionId);
HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, 
HttpMethod.GET, requestEntity, String.class);

如果使用 Spring RestTemplate 无法完成此操作,请建议我是否有其他方法。

最佳答案

没有 session cookie。 Cookie 只是一个标题。 您可能会将 header 重置为只有 JSESSIONID

要修复它,稍微改变一下逻辑

你以某种方式获得了 session ID(我猜是从一些请求中得到的)。在调用 restTemplate 时,不仅获取 session ,还获取所有其他 cookie,并将它们添加到 requestHeaders。

关于spring - 使用 Spring RestTemplate 调用请求时无法检索 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43526266/

相关文章:

java - 有人将 Leonard Richardson 和 Sam Ruby 所著的 "RESTful Web Services"书中的 reSTLet 示例更新为 reSTLet 2.0 吗?

algorithm - 为 FTP 和 HTTP 传输选择缓冲区大小

python - Apache 记分板(用于服务器统计)有 Python 接口(interface)吗?

spring - 如何更改 open api 代码生成器输入 yml 文件中的打包结构

java - Spring Data Repository JPA 实体继承问题 : Cannot instantiate abstract class or interface

java - 如何在现有 API 之上设计轻量​​级 REST API

C#:提供内容的 HttpListener 错误

java - 如何在spring mvc中设置响应头

java - ZKSpring 如何从 Spring MVC Controller 向 ZK zul 传递变量?

java - 使用 Jersey REStful Web 服务返回响应?