0

アプリケーションにいくつかのポートレットがあります。window.open() メソッドを使用して URL を開くと、セッション ID が変更され、他のポートレットでエラーが発生します。この URL を開かない場合、すべて正常に動作します。ただし、この新しいウィンドウが開かれると、セッションがクリアされ、一部の値が欠落しているため、残りのポートレットは例外をスローします。ブラウザのアドレスバーに javascript:alert(document.cookie); と入力しました。JSESSIONID を表示します。ページ全体で一定のままで、新しいウィンドウで新しい URL を起動するリンクをクリックすると変化します。IE8を使用しました。

IE でセッション状態を維持するための提案をいただければ幸いです。

4

1 に答える 1

0

window.open()にどのURLを渡しますか?IE 8でポップアップでJSESSIONIDを維持する簡単な方法は、ポートレットマークアップのwindow.open()の呼び出しで相対URLを使用することです。重要なことは、ドメイン名がまったく同じままであるということです。onclickイベントのwindow.open()を持つボタンの例を次に示します。

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

私はWebspherePortalを使用しているので、「/ wps/portal」はホームページにリンクするだけです。

また、ポップアップウィンドウのターゲットになる予定は何ですか?同じセッションの別のポータルページ?

更新:window.open()のターゲットが、同じドメインでホストされている独立したWebアプリケーションであると仮定します...

ポータルサーバーとWebアプリケーションをホストするアプリケーションサーバーには独立したセッションがありますが、どちらもデフォルトでJSESSIONIDと呼ばれるCookieを使用します。Webアプリケーションに初めてアクセスすると、アプリケーションサーバーがポータルのCookieを上書きし、ポータルへの後続のすべての要求で間違ったセッションIDが使用されるようになります。これが私に起こったとき、私の解決策は、2つが競合しないようにセッションCookieに別の名前(PORTALSESSIONIDなど)を付けるようにポータルを構成することでした。

于 2009-11-08T22:26:52.290 に答える