バージョン選択

フォーラム

メニュー

オンライン状況

40 人のユーザが現在オンラインです。 (10 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 40
もっと...

サイト内検索

バグ報告 > フロント機能 > ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
k-sophia
投稿日時: 2009/6/18 21:49
対応状況: −−−
新米
登録日: 2009/6/18
居住地:
投稿: 1
ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
ブラウザの「戻る」ボタンで戻ろうとする際に不具合があるようで困っています。「商品一覧ページ」が1〜4ページほどありまして、一覧に表示されている商品をクリックし「商品詳細ページ」へ進んだ後、ブラウザの「戻る」ボタンで戻ろうとすると、Firefoxではダイアログボックスの「再送信」ボタンを押せば戻れるのですが、Internet Explorer7(IE7)では「ページの有効期限が切れています」というページが表示され、Internet Explorer6(IE6)では「ページを表示できません」と表示されます。IE7の場合、それでももう一度「戻る」ボタンを押せば、一応戻ることはできるのですが、IE6では戻ることも進むこともできなくなります。この現象は「商品一覧ページ」の1ページ目から「商品詳細ページ」へ進んだ際は起こらないのですが、「商品一覧ページ」の2ページ目や3ページ目から「商品詳細ページ」へ進んだ際に起こります。
php.iniの設定で「session.cache_limiter = none」と記述すれば、こうした現象は起こらなくなる、という所までは調べたのですが、php.iniでこのような設定をしてしまうと、サイト全体に適用されてしまうため、会員登録や注文画面などの個人情報が関わるあたりで「戻る」を押すユーザーがいた場合、セキュリティ上の問題があるのではないか、と懸念しています。
セキュリティ上の問題は大したことがないのかどうか、php.iniの設定以外で解決する方法はないのか、どうすればよいか困っています。詳しい方がいらっしゃったらご教示ください。よろしくお願いします。
seasoft
投稿日時: 2009/6/19 4:09
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7333
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
「session.cache_limiter = none」が EC-CUBE に与える影響については別途検討が必要として、このディレクティブは PHP_INI_ALL ですので、.htaccess や *.php に埋め込むことで、他のアプリケーションへの影響を無くすことは可能です。

経験則的に、全ての画面で[戻る]ボタンを正常に動作させるというのは困難だと認識していますが、少なくとも商品一覧のページナビ遷移くらいはカバーしたいところですね。多分 POST しているのが原因なのでしょう。別件でも障害報告がありましたし、GET に変更するのが良いのかもしれませんね。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

ramrun
投稿日時: 2009/6/19 8:17
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
↓の件じゃないかと思いますが、結局これ、放置されてるみたいです。
チケット #261

このフォーラムでも「ページの有効期限」とかで検索すると、過去の報告が確認できるかと。

session_cache_limiter('private-no-expire')
が機能しないのって、
session_cache_limiter('private_no_expire')
じゃないのかな?


追記:
どこかで議論していたのをみたことあると探していたら、メーリングリストでした。

[comu-ml 0177] LC_Page::allowClientCache()が無効に
http://webml.ec-cube.net/comu-ml/200804/msg00000.html
seasoft
投稿日時: 2009/6/19 23:50
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7333
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
> ↓の件じゃないかと思いますが、結局これ、放置されてるみたいです。
> ・チケット #261

恒例のマイルストーン「EC-CUBE2.x.x」ですか・・・

EC-CUBEコミュニティ(eccube-comu) にて、ramrun 様ご指摘の方法を先行して対応してみました。
http://svn.ec-cube.net/open_trac/changeset/18132


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

ramrun
投稿日時: 2009/6/22 15:53
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
ありがとうございます。

こちらでも一応確認してみましたが、session_start()前にsession_cache_limiter()の設定をしていなければならないのは、Yammyさんの報告のとおりです。

つぎにsession_cache_limiter()で有効なのは
nocache
public
private
private_no_expire
で、これ以外の文字(noneとかno-cacheとかprivate-no-expire等)の場合は、キャッシュに関するヘッダー出力自体がされません。
そうなるとブラウザ側では有効期限無し?でキャッシュされるみたいで、結論から言うと「有効期限切れ」は表示されなくなり、間違っているにもかかわらずプログラマからみれば期待通りになるようです。

といっても、先に書いたとおり、そもそもsession_start()の後でsession_cache_limiter()をしているので、php.ini等の初期設定次第ということになります。

※php.iniのsession.cache_limiterは上記に加え、noneが使える
lucky7
投稿日時: 2009/6/23 2:20
対応状況: −−−
一人前
登録日: 2008/6/2
居住地: 東京近郊
投稿: 101
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
php.iniに関しては詳しくは無いのですが、
以前より不具合を感じていました。

モバイルのようにページごとにURLが生成できれば
解決するかと思っていたのですが、
まだ実装は出来ていません。

ページごとにURLを生成しても変わりは無いでしょうか?

個人的にはページごとにURLが生成された方が
メリットが大きいのではないかと感じています。


----------------
EC-CUBEバージョン 2.1.2
PHPバージョン PHP 4.3.9
DBバージョン MySQL 4.1.20

ramrun
投稿日時: 2009/6/23 17:10
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
引用:
モバイルのようにページごとにURLが生成できれば
それでもいいですし、POSTからGETに変えれば大丈夫だと思います。

試せる人は試して欲しいのですが、
eccube/data/class/pages/LC_Page.phpのallowClientCache()を
/**
 * クライアントのキャッシュを許可する.
 *
 * session_start時のno-cacheヘッダーを抑制することで
 * 「戻る」ボタン使用時の有効期限切れ表示を抑制する.
 *
 * @access protected
 * @return void
 */
function allowClientCache() {
    // session_cache_limiter('private-no-expire');
    $cache_expire = session_cache_expire() * 60;
    header('Pragma:');
    header('Expires:');
    header("Cache-Control: private, max-age=$cache_expire, pre-check=$cache_expire");
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
}
としたら改善しますか?

※赤は削除、青は追加
flealog
投稿日時: 2009/6/23 17:54
対応状況: −−−
仙人
登録日: 2008/6/10
居住地:
投稿: 485
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
引用:


試せる人は試して欲しいのですが、
eccube/data/class/pages/LC_Page.phpのallowClientCache()を
/**
 * クライアントのキャッシュを許可する.
 *
 * session_start時のno-cacheヘッダーを抑制することで
 * 「戻る」ボタン使用時の有効期限切れ表示を抑制する.
 *
 * @access protected
 * @return void
 */
function allowClientCache() {
    // session_cache_limiter('private-no-expire');
    $cache_expire = session_cache_expire() * 60;
    header('Pragma:');
    header('Expires:');
    header("Cache-Control: private, max-age=$cache_expire, pre-check=$cache_expire");
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
}
としたら改善しますか?

※赤は削除、青は追加


横から失礼します・・・
修正してみました♪

すごいです。
問題の【戻る】ボタンのエラーは発現しませんでした。

このまま様子を見てみます^^


----------------
EC-CUBE3っぽいテンプレート
GitHub で公開中
https://github.com/bluestylejp

お問い合わせ番号CSV登録&メール送信プラグイン
http://urx.red/qDT6

ramrun
投稿日時: 2009/6/23 19:34
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
flealogさん、ありがとうございます。

HTTPヘッダー的にはprivate_no_expireと同じものを出力しているはずなので、IE系のブラウザで問題なければallowClientCache()を生かすことができそうですね。
ramrun
投稿日時: 2009/6/28 19:41
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ブラウザの「戻る」ボタンで「ページの有効期限切れ」が表示される等の問題
コミュ版にコミットしてみました。
チェンジセット 18143

様子見お願いします。
(1) 2 3 4 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン



統計情報

総メンバー数は74,636名です
総投稿数は104,066件です

投稿数ランキング

1
seasoft
7333
2
468
3217
3
AMUAMU
2712
4
nanasess
2202
5
umebius
2078
6
yuh
1664
7
red
1498
8
h_tanaka
1188
9
tsuji
942
10
fukap
907
11
shutta
835
12
tao_s
794
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.