質問: 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で初期パラメータの複数重管理(良くない)でしのいでいますが、何か手は無いでしょうか? よろしくご教示のほど、お願いいたします。
回答: 以下の内容を確認すると良いでしょうか。(ソースコードと、実際にリクエストしているURLがないので、どのような実装になっているかはわかりませんので見当違いがあるかもしれませんがご了承ください。) * 2つのサーブレットでセッションID ( HttpSession.getId() )が同じ値なのか * セッション用クッキーを使わず、URLRewritingを利用している(URLに`;JSESSIONID=...`を使って渡していること)が、URLRewritingをTomcatの設定で許可しているのか。(昨今のTomcatでは無効です) * Javaサーブレット/JSPは、セッション維持にCookieを利用しています。Cookieの内容を確認しましょう。