Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ハイパーリンクでSessionが取得できない

初めまして、スコットといいます。

以下の二つのJSPがある場合に、a.jspをWord(or Excel)にURLを貼り付けて、押下した場合セッション情報がb.jspにて取得できない(nullになる)という問題が起きます。

【a.jsp】
<% session.setAttribute( "a", "test" ); %>
<meta http-equiv="Refresh" content="1;URL=http://localhost:8090/examples/jsp/b.jsp">

【b.jsp】
<%= session.getAttribute( "a" ) %>

エディタ(Em Editor)で押下した場合は正常に動作します。

どなたか原因を知っていらっしゃる方がおりましたら、ご教授よろしく願います。


10

回答

10873

閲覧

10件の回答

評価

0

エディタ上では正常ということは、URLの問題ではなさそうですね。
(ホストが変わると、当然セッションは引き継がれないので)

セッションはクッキーがないとダメなので、WordやExcelではクッキーを保持していない…でしょうか。

評価

0

mioさま回答ありがとうございます。

>エディタ上では正常ということは、URLの問題ではなさそうですね。
>(ホストが変わると、当然セッションは引き継がれないので)

はい、画面の遷移は正常に行われますので、URLは問題ないと思います。

>セッションはクッキーがないとダメなので、WordやExcelでは
>クッキーを保持していない…でしょうか。 

すいません、WordやExcelが独自にCookieを保持する(【Temporary Internet Files】の下ではなく)ということでしょうか?

現在使用している(テストとして)のはWord2000(9.0.3821 SR-1)です。特に設定などを触っておりませんが、何かクッキーに関する設定があるのでしょうか?

重ね重ねの質問で申し訳ありませんがよろしくお願いいたします。

評価

0

面白そうなので試してみた所、確かにダメでした。
session.getId()
の値が a.jsp と b.jsp で違いますので、別セッションになっている事は間違い無いですが、なぜ別になるのかは判りません。

試しに
URL=http://localhost:8090/examples/jsp/b.jsp

URL=/examples/jsp/b.jsp
にしてみましたが状況は全く変わらず・・・

ところでWord,ExcelにURLをこの形式で貼付した場合にダメっぽい事は判りましたが、これは必要なのでしょうか?
別な方法で代替えできるのでしたらそちらで回避した方が良いと思います。

評価

0

紡師さま回答ありがとうございます。

>ところでWord,ExcelにURLをこの形式で貼付した場合にダメっぽい事は判りましたが、これは必要なのでしょうか?
>別な方法で代替えできるのでしたらそちらで回避した方が良いと思います。

本来、WordやExcelから遷移するやり方を考慮したサイトではないので、別な方法があることはあります(というか別な方法が正常です)。

ただ、お客様のほうで「Wordでできなかったけどなぜ?」と聞かれ答えに窮してる状態です。

「MSのバグ」かなにかかなぁと思ってはいるのですがMicroSoftのページで今のところ該当するQAを見つけきれておりません(まだ日本語側しか調べてませんが)。

もともと、Wordで遷移するやり方が特殊なので、「このやり方で成功する方法を見つける」ことより「なぜこのやり方できないか」のほうが重要となっております。

ですので、原因がわかったからといって「Wordで遷移できる」ように修正するとは限りません。。

こちらの掲示板で回答が得られず、わたし自身の調査でも追求できなかった場合は「仕様です!!」の逃げ言葉で逃げようかと思ってます(笑)

評価

0

ああ、お名前を間違えてしまった。

紡師さま⇒某師さま

申し訳ありません。 

評価

0

バグというより、セキュリティがらみであえてそうしているのかも知れません。

評価

0

MicroSoft でこのようなものを見つけました。

Internet Explorer セキュリティ修正プログラム MS01-055 のインストール後、セッション変数が要求間で保持されない
http://support.microsoft.com/default.aspx?scid=kb;ja;316112

ASPに関することのため、よくわかりませんがJSPにおいても同様なことがいえるのかなぁと思っております。
「セキュリティ修正プログラム MS01-055」を削除してまで作業を行うことはしてませんが、いまのところもっとも有益な情報だと思います。

引き続き調査しますが、だんだん「仕様」の線が強くなってきました。

評価

0

>サーバー名にアンダースコア ("_") など、その他の文字が含まれている場合、Internet Explorer は Cookie をブロックします。
今回の件とは関係ないでしょう。

評価

0

>MicroSoft でこのようなものを見つけました。

なるほど、この線は非常に有力ですね。
FireFox や Netscape 等のMicroSoft仕様の影響を受けない他のブラウザで試して見る価値はあるかも知れません。SleipnirはI.E.エンジンを使用しているそうなので除外で。

もし FireFox や Netscape でセッションを保持できれば、MicroSoft(I.E.)仕様だと判断できます。

その後バージョン5.0辺りのI.E.かその辺でセッションを保持できれば「セキュリティ修正プログラム」のいずれかが原因と特定できそうです。

これなら客先に顔向けできますねw

評価

0

さっそく「FireFox」と「Netscape」で実行してみました。

結果
 FireFox  成功
 Netscape 失敗(というかWordからNetScapeに飛ばなかった)

標準ブラウザをNetscapeにしているにもかかわらず、ハイパーリンクはIEに遷移したのでNetscapeは確認できませんでした(MicroSoftが嫌ってるのだろうか?)。

けど、FireFoxで問題なく成功したところを見るとやはりMicroSoftのバグ(または仕様)かと思われます。

IEの旧バージョンは即座に手に入るものではないので実行できませんでした。

完全な解決策が見つかったわけでも、正確に何が(IEのVerなのかどうか等)原因かもわかっておりませんが、ここまで解っていれば客先に顔向けできそうです。
(というか、Wordから遷移なんてしないで欲しかった)

客先に報告し詳細な調査要求があれば、突き詰めたいと思いますが、とりあえずここまでで解決にしておきます。

mioさま、某師さま、ありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。