- - PR -
子window open時のsessionについて
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-12-16 14:57
お世話になります。下記の件についてご教授ください。
window.open()にて子画面を立ち上げる親画面が複数あります。 この際に、window名(window.openの第2引数)を指定しており、 どの親画面についても同じ値を設定しています。 (子画面は複数立ち上げたくなく、同じブラウザ上で画面が切り替えたいためです。) 2つのブラウザを立ち上げ、それぞれの親画面から子画面をopenした際に、 (それを親画面A、Bとする) まずAからは正常に開く(子windowが立ち上がる)ことができますが、 続いてBから開いた(子windowが切り替わる)場合に Aのsessionから情報を取得してしまっているようで、問題が発生しています。 この際、子画面からBのsessionから情報を取得する方法はありませんでしょうか? よろしくお願いいたします。 (開発環境) Struts1.1 jdk1.3.1 weblogic6.1 | ||||
|
投稿日時: 2003-12-16 15:12
その場合、セッションを共有してしまうのは避けられないかと思います。
CookieにセッションIDを保持せずに、URL末尾で保持するようにすれば その限りではないと思いますが、おそらく非常に難解でしょう。 むしろ、ひとつのセッション内にウィンドウの親子関係を示す 構造を作成しておくのが素直な解法に感じました。 そうした設計部分を見直す事はできませんか? 1ユーザに複数のセッションが必要になる背景が、 どうにもイメージつかないのが正直な感想です。 // あんまりアドバイスになってないですね。 | ||||
|
投稿日時: 2003-12-16 16:18
私も同意です。 1ユーザで1セッションになるように設計を見直した方が良いのでは?と思います。 まず、なぜ1ユーザで複数セッションを使わなければならないのか、そこから じっくり考え直してみるのはいかがでしょうか? | ||||
|
投稿日時: 2003-12-16 17:00
この例ですとBから開いた場合にもしすでに子画面があれば閉じる。
という処理を追加すれば解決するように思えます。 検索するスクリプトは ここ ただセッションを分ける理由はやはりわかりません(^^;) | ||||
|
投稿日時: 2003-12-16 17:41
察するにRyoさんはsessionはウィンドウ毎に個別に保持すると勘違いなされているのではないでしょうか?
正確に言うとsessionはsessiono-id毎になります(あたりまえですが)。session-idの情報はブラウザ側では普通cookieに保持され、子ウィンドウは親ウィンドウとcookieを共有します。この結果、Ryoさんの言うような結果になっているのです。 解決法としては、でくのぼうさんの言うようにsession内部に何らかの構造を持たせるのが一番ではないでしょうか? | ||||
|
投稿日時: 2003-12-24 15:10
遅くなって申し訳ございません。
とりあえず、sessionで渡している情報をURLの後ろの?の後に(スミマセン。正式な名前がわかりません。)つけて渡すようにしようかと考えています。 皆さんがおっしゃるように、仕様的に考慮漏れがあり、 1ユーザが複数セッションを使用しなければならないという状態に 陥っている状態です。 色々と助言の方ありがとうございました。 | ||||
|
投稿日時: 2003-12-24 20:47
いわゆる、「URL Rewriting」という手法でAPサーバがセッションIDを管理するのと 同じ手法ですね。これは、Cookieをサポートしないブラウザ(主に携帯向け)や、PCの ブラウザでもCookieをオフにされてしまった際に用いる手法です。 まあでも、設計を見直さないといつか破綻をきたす気が、、、 [ メッセージ編集済み 編集者: おばけ 編集日時 2003-12-24 20:47 ] | ||||
1
