我有两个网络应用程序。第二个应用程序有一个 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/