頁面中嵌入iframe出現了緩存,帶來的頁面刷新問題
工作中碰到的問題
包含iframe的頁面,iframe中存在登陸驗證的問題。當通過iframe已經完成了登陸,此時iframe對應的服務異常上下電又恢復了服務時,這時再刷新整個頁面,即使用新的登陸驗證信息依然無法驗證通過。
通過對iframe裏請求的分析發現,刷新後請求頭依然使用的是之前的驗證信息(token和session)。
一般的做法
- 前端:在iframe指向的頁面地址後綴添加一個時間戳。確保每次加載時,讓瀏覽器知道它是最新的頁面,避免緩存。
var ts = new Date().getTime()
<iframe src="http://xxx/xxx/xxx.html?_" + ts></iframe>
- 服務端:修改Response的頭信息
Header:
"Cache-Control": "no-cache"
分析根源
- 卸載頁面前,觀察iframe指向頁面中的session和cookie殘留情況
window.location.href = "about:blank"
查看瀏覽器本地的cookie和session情況
- 在卸載頁面前,調用相應的方法清除頁面卸載後殘留的cookie和session