[英]Back button doesn't refresh page if URL contains GET parameters or trailing slash?
我有一個CodeIgniter站點,在登錄頁面被命中時為用戶分配UUID。 重新加載登錄頁面將分配一個新的UUID,但是一旦您開始瀏覽表單,您的UUID將保持不變。 然而,當用戶點擊后退按鈕時,我不太了解某些事情,並且根據他們到達的URL,行為會有所不同?
案例1: domain.com/somehash?key=value
domain.com/somehash/
= domain.com/somehash?key=value
OR domain.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';
嘗試設置這些標頭,看看是否在兩種情況下都使行為保持一致:
$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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.