2009-10-11 6 views
0

J'ai plusieurs portlets dans mon application. Si j'ouvre une URL en utilisant la méthode window.open(), l'identifiant de session change et provoque une erreur dans les autres portlets. Si je n'ouvre pas cette URL, tout fonctionne bien. Mais une fois cette nouvelle fenêtre ouverte, la session est effacée et le reste des portlets lève une exception car certaines valeurs sont manquantes. Dans la barre d'adresse du navigateur j'ai tapé javascript: alert (document.cookie); pour voir le JSESSIONID. Il reste constant sur toute la page et change lorsque je clique sur le lien qui lance une nouvelle URL dans une nouvelle fenêtre. J'ai utilisé IE8. Toutes les suggestions pour maintenir l'état de la session dans IE seraient grandement appréciées.window.open() efface la session

Répondre

0

Quelle URL transmettez-vous à window.open()? Un moyen facile d'obtenir IE 8 pour maintenir le JSESSIONID dans le popup serait d'utiliser une URL relative dans l'appel à window.open() dans le balisage du portlet. L'essentiel est que le nom de domaine reste exactement le même. Voici un exemple d'un bouton avec window.open() en cas onclick:

<button onclick="javascript:window.open('/wps/portal')">Home Page</button> 

J'utilise Websphere Portal, donc '/ wps/portail' liens juste la page d'accueil.

En outre, qu'avez-vous l'intention d'être la cible de la fenêtre contextuelle? Une page de portail différente avec la même session?

Mise à jour: Étant donné que la cible des window.open() est une application web indépendant hébergé sur le même domaine ...

Le serveur de portail et le serveur d'applications hébergeant l'application Web ont des sessions indépendantes , mais ils utilisent tous les deux un cookie appelé JSESSIONID par défaut. La première fois que vous accédez à l'application Web, le serveur d'applications écrase le cookie du portail, entraînant ainsi l'échec de toute demande ultérieure au portail. Quand cela m'est arrivé, ma solution était de configurer le portail pour qu'il nomme un autre cookie de session (par exemple PORTALSESSIONID) afin que les deux ne soient pas en conflit.

+0

Merci pour la réponse ... Je passe l'url complète en tant que paramètre à la méthode open(), mais le nom de domaine est exactement le même que celui du parent. Je vais essayer votre suggestion aussi. La cible n'est pas une page de portail, mais une application Web différente hébergée sous le même domaine, par exemple si le domaine principal est example.com, j'ouvre example.com/app/index.jsp – jobinbasani

+0

Je pense qu'il peut y avoir un conflit de noms avec le cookie JSESSIONID. J'ai mis à jour cette réponse avec quelques détails supplémentaires. – cc1001

Questions connexes