5

ランディング ページが表示されたときにユーザーに UUID を割り当てる CodeIgniter サイトがあります。ランディング ページをリロードすると新しい UUID が割り当てられますが、フォームを進め始めると、UUID は変わりません。しかし、ユーザーが戻るボタンを押したときによくわからないことが起こっており、どの URL で到着したかによって動作が異なりますか?

ケース 1:domain.com/somehash?key=valueまたはdomain.com/somehash/

GET パラメータを含む上記の URL にアクセスし、最初のフォーム (uuid を含む) を送信して [戻る] ボタンを押すと、ランディング ページに戻りますが、UUID は変更されません。

ケース 2:domain.com/somehash

GET パラメータがない場合、最初のフォーム (uuid を含む) を送信して [戻る] ボタンを押すと、ランディング ページに戻り、新しい uuid を受け取ります。

最新の Chrome と Firefox でこれをテストしましたが、実装されている何らかのキャッシュ戦略に関連していますか? 理想的には、反撃してもページが更新されません。

編集: このツールでは Cookie を使用できないため、セッションが終了していることに注意してください。

さらに編集: に移動domain.com/してバックスラッシュを追加すると、戻るボタンを押したときに UUID が更新されなくなります。CodeIgniter の routes.php または .htaccess に関連している可能性がありますか?

関連する .htaccess エントリ:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L]

Routes.php:

$route['default_controller'] = "home";
$route['404_override'] = '';

$route['(:any)'] = 'home/index/$1';
4

1 に答える 1

1

これらのヘッダーを設定してみて、両方のシナリオで動作が一貫するかどうかを確認してください。

$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate");
$this->output->set_header("Cache-Control: post-check=0, pre-check=0");
$this->output->set_header("Pragma: no-cache");
$this->output->set_header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

詳細: http://ellislab.com/codeigniter/user-guide/libraries/output.html

于 2013-05-06T21:51:56.460 に答える