簡體   English   中英

如果URL包含GET參數或尾部斜杠,則后退按鈕不刷新頁面?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM