質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Java

    13806questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • jQuery

    6715questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

  • Ajax

    1090questions

    Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

  • Tomcat

    562questions

IE経由とAjax経由でTomcatのセッション変数を共有したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 450

gitkxxxbase

score 1

Windows Server2012R2で、Tomcat8(Apache無しの素のサーバー)+JavaSE7で、サーブレット+JSPのシステムを作っています。
ブラウザは2012R2のIE11で、jQueryは3.2.1です。2012R2は2017-08のアップデートまでは済んでいる事を確認済みです。

した事は、

  1. 初期サーブレットで、web.xmlからの初期パラメータ(DBの情報など)を得て、セッション変数に書き込む。
  2. JSP画面に遷移して、そのセッション変数の一部をスクリプトレットで画面に表示し、
  3. JSP画面のjQueryのReadyのタイミングで、jQueryのAjax(GET)で、専用サーブレット(戻り値はJSON)を呼ぶ。

です。サーブレット2つとJSPは共に、同ドメイン・同フォルダに有ります。
(サーブレットはweb.xmlのマッピングによる。)

ここで質問ですが、

  • JSP画面でのJSESSIONIDは確かに、専用サーブレットに渡っています。これは、LoggerでLogに出すことと、Fiddler4で確認しました。
  • JSP画面で確かに、セッション変数の一部が画面に表示されました。
  • しかし、専用サーブレットで、session.getAttribute()すると全てNULLです。

という事を何とかする方法は無いでしょうか?

Fiddler4で見たところ、ヘッダで、userAgentはIEとAjaxと完全一致で、X-Requested-With XMLHttpRequestが後者に有る以外は同じです。
むしろ、別ドメインでのCRSFを回避しつつのセッション変数の共有の記事は見ますが、こちらは全く見ません。15分どころか5時間調べても全くダメでした。

現在は、web.xmlで初期パラメータの複数重管理(良くない)でしのいでいますが、何か手は無いでしょうか?
よろしくご教示のほど、お願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

0

お騒がしいたしました。
初期サーブレットを書いた人(新人)がひな型ソースに書いてある、セッション変数の名前(getAttributeNamesで見るもの)の名前の一部のみを大文字→小文字にしてしまった為でした。
エディターは大文字小文字を気にしない設定にして有り、本当に気づけませんでした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

以下の内容を確認すると良いでしょうか。(ソースコードと、実際にリクエストしているURLがないので、どのような実装になっているかはわかりませんので見当違いがあるかもしれませんがご了承ください。)

  • 2つのサーブレットでセッションID ( HttpSession.getId() )が同じ値なのか
  • セッション用クッキーを使わず、URLRewritingを利用している(URLに;JSESSIONID=...を使って渡していること)が、URLRewritingをTomcatの設定で許可しているのか。(昨今のTomcatでは無効です)
  • Javaサーブレット/JSPは、セッション維持にCookieを利用しています。Cookieの内容を確認しましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/28 19:08

    結果的に、クッキー等は正常でした。お騒がせいたしました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13806questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • jQuery

    6715questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

  • Ajax

    1090questions

    Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

  • Tomcat

    562questions