Php 后退按钮不可用';如果URL包含GET参数或尾部斜杠,是否刷新页面?

Php 后退按钮不可用';如果URL包含GET参数或尾部斜杠,是否刷新页面?,php,codeigniter,google-chrome,firefox,Php,Codeigniter,Google Chrome,Firefox,我有一个CodeIgniter站点,当登录页面被点击时为用户分配一个UUID。重新加载登录页将分配一个新的UUID,但一旦开始处理表单,您的UUID将保持不变。然而,当用户点击后退按钮时,发生了一些我不太理解的事情,根据他们到达的URL,行为会有所不同 案例1:domain.com/somehash?key=value或domain.com/somehash/ 如果您到达时上面的url包含GET参数,提交第一个表单(包含您的uuid),然后按后退按钮,您将返回到登录页,但您的uuid不会更改 案

我有一个CodeIgniter站点,当登录页面被点击时为用户分配一个UUID。重新加载登录页将分配一个新的UUID,但一旦开始处理表单,您的UUID将保持不变。然而,当用户点击后退按钮时,发生了一些我不太理解的事情,根据他们到达的URL,行为会有所不同

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

如果您到达时上面的url包含GET参数,提交第一个表单(包含您的uuid),然后按后退按钮,您将返回到登录页,但您的uuid不会更改

案例2:
domain.com/somehash

在没有GET参数的情况下,如果您提交第一个表单(其中包含您的uuid)并按下后退按钮,那么您将返回到登录页并接收新的uuid

我在最新的Chrome和Firefox中测试了这一点,它是否与他们实施的某种缓存策略有关?理想情况下,回击不会刷新页面

编辑:我应该注意,我们不能将cookies用于此工具,因此会话已结束

进一步编辑:只需转到
domain.com/
,添加反斜杠,即可在点击后退按钮时停止UUID刷新。可能与CodeIgniter routes.php或.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';

尝试设置这些标题,看看这是否会使两种情况下的行为一致:

$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");

更多信息:

在将控制器中生成的UUID、php或JS?php传递到CI中的视图之前,您将在何处分配该UUID、php或JS?php。您是否解决过此问题?没有更改,使用GET参数或尾部斜杠在回击时仍然不会强制刷新。如果没有反斜杠/GET回击,则会强制刷新。奇怪。你能用你用来将UUID附加到URL的php更新你的问题吗?实际上UUID只是一个隐藏的表单字段,当你点击登录页面时,它就嵌入了,它不会出现在URL中。这肯定是一个缓存问题。无论出于何种原因,CI对URL的处理方式有所不同。您是否将输出标题设置为控制器中的最后一项?另外,案例1或案例2是您想要的结果吗?是,将标题设置为控制器中的最终内容,并通过Chrome inspector验证这些标题是否已收到。理想的结果是在单击“上一步”时不刷新UUID,而只是经过深思熟虑的硬刷新