2 wo812389882 wo812389882 于 2017.09.11 16:40 提问

打开url,发现打开的总是缓存的url

有一个url地址,通过访问这个地址,会经过一个验证是否登录的拦截器,如果未登录,会跳转到登录页面,现在问题是,我访问一次这个url(已登录的情况下),然后关闭浏览器,再重新访问这个url,发现打开的一直都是缓存的页面,没有访问这个url,导致验证登录的拦截器失效,这个问题怎么解决,在线等,挺急的

10个回答

q213546879
q213546879   2017.09.11 16:51
已采纳

可以提供给你一个思路,假设用户第一次进入你的网站,没有登录,也没有缓存,这时候会跳转到登录页面,这没有问题。
然后他登录了,这时候你可以用js向浏览器写入一个cookie 然后他每次访问其他页面的时候都去访问以下这个cookie值,如果cookie存在,那么放行,如果不存在,那么用js跳转到登录页面

这个是前端的一个解决思路

再来一个比较保险的思路:
第一次用户进来,访问任何一个页面都跳转到登录页,这没问题,然后登录,这时候用户可以向后端发送一个数据,表明用户的登录状态。然后每次刷新页面的时候都用js去访问以下后端,这时候后端来控制是否让这个用户继续浏览

qq_26433213
qq_26433213   2017.09.11 17:05
HTML: 
<META HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> 
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
<META HTTP-EQUIV="expires" CONTENT="0"> 

ASP 
response.expires=0 
response.addHeader("pragma","no-cache") 
response.addHeader("Cache-Control","no-store, must-revalidate") 

PHP 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Cache-Control: no-store, must-revalidate"); 
header("Pragma: no-cache"); 

JSP: 
response.addHeader("Cache-Control", "no-store, must-revalidate"); 
response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT");
lcmsx
lcmsx   2017.09.11 17:08

楼主没有说清楚你是手动访问别人的URL还是别人访问你的URL出现的缓存现象,我个人解决方案如下:
1、如果是手动访问第三方URL出现的缓存,那么你使用“隐私模式”进行访问可以避免缓存,假设不会使用,具体可以百度。
2、如果是客户访问你的URL出现的缓存现象,那么你又要做如下检查:

1)你的响应头中是否有缓存项设置。根据你的描述,有这个可能。
2)确认你的登录机制,不会造成未退出网页,而是直接关闭浏览器的情况下,登录信息没有清理掉。假设你的登录机制使用的Cookie,很有可能出现此问题。就会造成强关浏览器后,再次访问就不需要登录了,因为你的登录信息已经存在,上次关闭时,没有清理掉。

最后,提醒楼主一下,你自己测试时,如果重新测试,麻烦清理掉缓存,Cookie等信息后再测试。

如果有用,望采纳。

wo812389882
wo812389882   2017.09.11 16:45

自己顶!d=====( ̄▽ ̄*)b

u013181058
u013181058   2017.09.11 16:46

后面加个时间戳url?time=xxx

wo812389882
wo812389882 加时间戳可以解决类似问题,但是不适用我的场景,由于安全问题,我的是访问一个url,这个url会跳转到另一个无法直接访问的页面,所以即使在url上加时间戳,再次打开还是走的缓存,要跳转的url是无法加时间戳的
3 个月之前 回复
huang931027
huang931027   2017.09.11 16:52

要加时间戳的,不然服务端没有刷新的,这不是浏览器的问题

u011313384
u011313384   2017.09.11 17:00

100C真是太土豪了

qq_26433213
qq_26433213   2017.09.11 17:05

html页面禁止缓存

HTML:



ASP
response.expires=0
response.addHeader("pragma","no-cache")
response.addHeader("Cache-Control","no-store, must-revalidate")

PHP
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, must-revalidate");
header("Pragma: no-cache");

JSP:
response.addHeader("Cache-Control", "no-store, must-revalidate");
response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT");

wo812389882
wo812389882 没有用的,无论怎么设置,浏览器还是要缓存
3 个月之前 回复
zy841958835
zy841958835   Ds   Rxr 2017.09.11 17:15

服务端 校验cookie信息 这样才是安全的

wo812389882
wo812389882   2017.09.11 17:48

问题算是解决吧,给记录sessionId的cookie设置一个过期时间,算是避免这个问题了吧

Csdn user default icon
上传中...
上传图片
插入图片