Mineaki Gotoh
gij****@peak*****
2002年 11月 16日 (土) 15:38:55 JST
SSLスレッドの皆様、こんにちは。後藤です。 ずいぶんと間があきましたが、忘れていたわけではありません。暇をみつけ ては原因の究明をちょこちょことやっていたのですが、ようやくそれらしき ものをみつけましたので報告します。 実は、うちでもようやく動作確認用にOperaを入れてみたのですが(意外と良 いブラウザですね)、ここで叱られたのが、「クッキーのパスが違う」とい うこと。IEではエラーが出ないので、まったく気づかなかったのですが、お そらく、うちでもクッキーは正常に保存されていなかったのでしょう。 それを手がかりに調べてみたら、 catalog/includes/application_top.php 190行目付近 // lets start our session if ($HTTP_POST_VARS[tep_session_name()]) { tep_session_id($HTTP_POST_VARS[tep_session_name()]); } if ( (getenv('HTTPS') == 'on') && ($HTTP_GET_VARS[tep_session_name()]) ) { tep_session_id($HTTP_GET_VARS[tep_session_name()]); } if (function_exists('session_set_cookie_params')) { session_set_cookie_params(0, substr(DIR_WS_CATALOG, 0, -1)); } あらかさまに怪しい部分があるじゃないですか。こんなコードでは、 HTTP_SERVER: 'http://aaa.com' HTTPS_SERVER: 'https://ssl.bbb.com/~aaa' ENABLE_SSL: True DIR_WS_CATALOG: '/shop/' という環境だと、HTTPS時にクッキーが効かないのは当然です。 (osCommerceって、こういう部分が無頓着なんですよね) osCommerceでは、原則的に、自前でセッション用のリンクを生成しているよ うなのですが、それがきちんと出来てないか何かの理由で、Cookie経由での セッションとなるときがあり、HTTPS接続ではそのクッキーからセッション情 報を得ることが出来ないため、$navigation なども含めて消えてしまい、トッ プページからのやり直しとなる。 ……こんな予想なのですが、どうでしょうかね。 実は、Operaでもうちでは正常な動作なので、本当にそうなのかどうか判らな いんですよ。なぜうちでは正常な動作なのか、というのも不思議なのですが、 --enable-trans-sid あたりのビルドオプションが重要なのかもしれません。 (application_top.phpでは一応、無効にしているみたいですが、無効化が効 かないなどの理由でうまくセッションがつながった可能性はあります) とりあえず、私の仮説が正しいかどうかを確認するために、 https://<SSL_Host>/catalog/account_history_info.php?order_id=10 に入ろうとした時に表示される https://<SSL_Host>/catalog/login.php?(この部分) と、ログインした後に表示される https://<SSL_Host>/catalog/default.php?(この部分) を教えていただけませんか? あと、自前のサーバで、--enable-trans-sid が無効であれば、それを有効に したらどうなるかもお願いします。 -- 株式会社PEAK ネットワーク技術担当 後藤 <gij****@peak*****>