ログイン画面(https)より
1.ID、PASSを入力し、ログインする
2.JAVAで入力されたID、PASSをセッション変数にセット
3.メニュー画面(http)を開く。そのときセッション変数を
確認してNullの場合はログイン画面に戻る
といったシステムを作成しています。
しかしSSLの問題なのか、ブラウザを開いて1回目のログイン時は
メニュー画面を開いたときにセッション変数がNullになっています。
2回目以降は問題なく処理されるのですが...
SSLでセッションがクリアされるとかいうことはあるのでしょうか?
よろしくお願いします。
OS:FreeBSD 4.7
Apache:1.3.33
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
試してないので分かりませんが、
おそらく
httpsとhttpではドメインが変わるので、cookieのセッションIDが送られません。
なので、セッションが消えたように見えるのでしょう。
httpsからhttpへのリクエストだけURLリライティングを利用してみてはどうでしょうか。
回答ありがとう御座います。
>おそらく
>httpsとhttpではドメインが変わるので、cookieのセッションIDが送られません。
>なので、セッションが消えたように見えるのでしょう。
なんで2回目以降は問題なく処理されるのでしょうか?
初心者で申し訳ありません...
No.2
- 回答日時:
2回目とは、もう一度ブラウザを閉じて同じ動作をするということですか?
もう少し詳しくお願いします。
この回答への補足
説明不足ですいません。
1.ブラウザを立ち上げ、ID,パスを入力しログイン(https)
2.メニューが開かれる(http)がセッションがNullの為再度ログインページに飛ぶ(同じブラウザ)
3.もう一度ログインし直す(https)
4.今度はセッションが入っているので通常のメニュー画面(http)
一度ブラウザを閉じてしまうと1からやり直しになってしまいます。
セッションへの登録は
session.setAttribute("変数", 画面の値);
こんな感じです。
No.3
- 回答日時:
HttpSession session = request.getSession(false);
にしていませんか?
falseを指定した場合、HttpSessionがないとnullが返されます。
回答ありがとう御座います。
セッション変数へセットしているサーブレットは
HttpSession session = request.getSession(true);
にしてあり、
セッション変数を取得しているJAVAは
public class Login {
public void chkLogin(HttpServletResponse response, HttpSession session, String strJumpPage) throws Exception {
/* セッション変数より取得する */
String strCD = (String)session.getAttribute("cd");
中略
}
}
となっています。
No.4
- 回答日時:
>セッション変数へセットしているサーブレットは
>HttpSession session = request.getSession(true);
>にしてあり、
??sessionのチェックのときはfalseですよね?
ごめんなさい、載せて頂いたソースのつながりがよく分かりません。
この回答への補足
わかりずらくて申し訳ありません...
ログインページからログイン時、サーブレットを実行
//////////////////////////////////
public class Serv_Login extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html; charset=Shift_JIS");
HttpSession session = request.getSession(true);
/* コードを取得 */
String strCD = request.getParameter("cd");
session.setAttribute("cd", strCD);
中略
response.sendRedirect(response.encodeURL(メニュー画面の絶対パス));
}
}
//////////////////////////////////
メニュー画面開くとき以下のVAVA関数を実行
//////////////////////////////////
public class Login {
public void chkLogin(HttpServletResponse response, HttpSession session, String strJumpPage) throws Exception {
/* セッション変数より取得する */
String strCD = (String)session.getAttribute("cd");
/* ↑取得できない↑ */
中略
}
}
//////////////////////////////////
チェックの時は特に(false)の設定はしておりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
- PHP ログインした掲示板ですが、直接開かないような設計するには? 2 2022/10/29 16:30
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- Mac OS MAC (Late 2020)で復元後、キーボード入力(文字)ができなくなり困っています。 1 2023/02/15 20:35
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQL・Tomcat・JSP 何度もSub...
-
setAttribute getAttribute 配...
-
struts java ログインのセッシ...
-
ASP.NETのGlobal.asaxについて
-
struts2でのフィルターを使った...
-
セッションタイムアウト時にエ...
-
JSPでsession変数が勝手に書き...
-
ASP.net1.0をWIN7のIISで動...
-
HTMLのSELECTタグの使い方、JSP...
-
グローバルIPアドレスの変更タ...
-
フォーム上で押されたボタンに...
-
j-axis 腕時計のアラーム止めたい
-
jspからServletを呼び、元のjsp...
-
プログラミングで例えばゲーム...
-
腕時計の時報をならないように...
-
ActiveWorkbook.Pathの一つ下の...
-
画面を隠す・消す方法を教えて...
-
JSP+Servletで終了ボタン
-
C言語で今まで表示していた画面...
-
ServletからHTMLページへの遷移...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptでセッションを取得
-
グローバルIPアドレスの変更タ...
-
setAttribute getAttribute 配...
-
javascriptでのログアウトボタン
-
フレームを使用した際のセッシ...
-
javascriptでセッションの削除...
-
sessionスコープとapplication...
-
セッションの情報の消去について
-
HTMLのSELECTタグの使い方、JSP...
-
エラーページ遷移後に入力値を残す
-
ブラウザバック禁止
-
MySQL・Tomcat・JSP 何度もSub...
-
ASP.NETのGlobal.asaxについて
-
複数Webサーバーでのセッション...
-
HttpSessionListenerクラスに関...
-
jsessionidの有効期限を延長す...
-
Tomcatでの同一セッション同時...
-
aタグによる複数リンクを別セッ...
-
JSPでブラウザ終了時にPostgreS...
-
XMLHTTPを使って、セッションID...
おすすめ情報