2017-04-20 1 views
1

J'ai deux applications Web. Il y a une HttpSession à la deuxième application et la première application en connaît l'identificateur de session.Impossible de récupérer les cookies lorsque la requête est appelée à l'aide de Spring RestTemplate

Je fais une demande de Première application à la deuxième application en utilisant RestTemplate en ajoutant son id de session aux en-têtes.

Lorsque la demande est reçue à la deuxième application, j'essaie de lire tous ses cookies de la demande. Mais, je ne vois que le cookie JSESSIONID et je ne reçois pas tous les cookies que j'ai définis précédemment. Supposons, j'accède à la même URL sur le navigateur manuellement, je vois tous ces cookies récupérés.

Demande faite en première application:

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); 

Si cela ne peut être fait en utilisant Spring RestTemplate, s'il vous plaît me suggérer s'il y a une autre façon de le faire.

+1

Dans votre code, je ne peux voir qu'un seul cookie en cours de définition (JSESSIONID). Où sont les autres? –

+0

Roman, Dans App2, comme je l'ai dit j'ai une session (J'utilise App2 dans le même navigateur dans un autre onglet, je me connecte à lui et créer un cookie (jeton) de Java après je me connecte). Depuis App1, j'accède à celui de la ressource (http://example.com/data/retrieve) de App2 avec son jsessionid depuis App1, quand la requête atteint à App2, puisque j'ai le jsessionid dans les en-têtes qu'il récupère session, mais pas tous les cookies de la session que j'ai créée après ma connexion. – Ramang

Répondre

0

Il n'y a pas de cookie de session. Cookie est juste un en-tête. Vous devez réinitialiser l'en-tête pour avoir seulement JSESSIONID.

Pour résoudre ce problème changer la logique un peu

Vous obtenez en quelque sorte l'identifiant de session (je suppose que d'une certaine demande). Obtenez non seulement la session, mais tout le reste du cookie et ajoutez-les au requestHeaders lorsque vous appelez le restTemplate.

+0

StanislavL, Merci, j'essaie de faire la même chose. – Ramang