如果URL包含GET参数或尾部斜杠,则后退按钮不刷新页面?

时间:2013-05-06 20:39:09

标签: php codeigniter google-chrome firefox

我有一个CodeIgniter网站,可在用户点击目标网页时为其分配UUID。重新加载登录页面将分配一个新的UUID,但是一旦您开始浏览表单,您的UUID将保持不变。然而,当用户点击后退按钮时,我不太了解某些事情,并且根据他们到达的网址,行为会有所不同?

案例1:domain.com/somehash?key=valuedomain.com/somehash/

如果您使用上面包含GET参数的网址到达,请提交第一个表单(包含您的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';

1 个答案:

答案 0 :(得分: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