html 缓存控制
2015-12-14 00:00
447 查看
关于url权限的控制,遇到这样的问题。
A用户对A菜单有权限访问。
B用户对A菜单无权限访问。
A用户登陆系统后,直接输入A菜单的url,可以访问。
此时,A用户退出。
B用户登陆系统后, 直接输入A菜单的url,不可以访问。
跳转到登陆页面。
此时,A用户登陆后, 直接输入A菜单的url,不可以访问(同时也没有向服务器发现该url的请求)。
一直不明白,为什么这造成这样的原因?
说是session没清除?
当无权限时,会执行如下代码:
//没权限,清空session中的值
session.invalidate();
String url = request.getContextPath();
response.setContentType("text/html;charset=UTF-8");
//response.setHeader("Pragma","No-cache");
//response.setHeader("Cache-Control","no-cache");
//response.setDateHeader("Expires", 0);
PrintWriter out = response.getWriter();
out.print("<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>");
out.print("<script>");
out.print("alert('你没有足够的权限进行此操作!');");
out.print("parent.document.location.href='" + url + "';");
out.print("</script>");
out.close();
同时,如果是关闭IE重新用A用户登陆访问A菜单,就可以。
经分析,目前认为是这样:
当无权限访问时,首次会执行这段代码。
然后,无权限的url的内容就被替换为上述代码所形成的静态页面(html)的内容了。
记得IE有这么一种功能,客户端第一次向服务器发出请求,服务器响应,客户端收到请求后,存入当前会话缓存中。
当客户端第二次向服务器发现同样的请求时,实际上,IE并没有马上就向服务器发出请求,而是先查询本地的缓存中,
是否存在相同请求的内容,如果有,直接返回该内容,如无(上次的请求在此刻已失效),才再次向服务器发出请求。
这也就是为什么会出现这样情况的原因。
然后,在形成此html内容时,在响应头添加相关属性(将响应设为无缓存控制),如下:
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
此时,每次访问同样无权限的菜单时,它都会向服务器发出请求。
A用户对A菜单有权限访问。
B用户对A菜单无权限访问。
A用户登陆系统后,直接输入A菜单的url,可以访问。
此时,A用户退出。
B用户登陆系统后, 直接输入A菜单的url,不可以访问。
跳转到登陆页面。
此时,A用户登陆后, 直接输入A菜单的url,不可以访问(同时也没有向服务器发现该url的请求)。
一直不明白,为什么这造成这样的原因?
说是session没清除?
当无权限时,会执行如下代码:
//没权限,清空session中的值
session.invalidate();
String url = request.getContextPath();
response.setContentType("text/html;charset=UTF-8");
//response.setHeader("Pragma","No-cache");
//response.setHeader("Cache-Control","no-cache");
//response.setDateHeader("Expires", 0);
PrintWriter out = response.getWriter();
out.print("<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>");
out.print("<script>");
out.print("alert('你没有足够的权限进行此操作!');");
out.print("parent.document.location.href='" + url + "';");
out.print("</script>");
out.close();
同时,如果是关闭IE重新用A用户登陆访问A菜单,就可以。
经分析,目前认为是这样:
当无权限访问时,首次会执行这段代码。
然后,无权限的url的内容就被替换为上述代码所形成的静态页面(html)的内容了。
记得IE有这么一种功能,客户端第一次向服务器发出请求,服务器响应,客户端收到请求后,存入当前会话缓存中。
当客户端第二次向服务器发现同样的请求时,实际上,IE并没有马上就向服务器发出请求,而是先查询本地的缓存中,
是否存在相同请求的内容,如果有,直接返回该内容,如无(上次的请求在此刻已失效),才再次向服务器发出请求。
这也就是为什么会出现这样情况的原因。
然后,在形成此html内容时,在响应头添加相关属性(将响应设为无缓存控制),如下:
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
此时,每次访问同样无权限的菜单时,它都会向服务器发出请求。
相关文章推荐
- @htmlhelp
- HTML之禁止输入文本
- 【HeadFirst】第七章:web开发[本地localhost访问][自动访问index.html]
- 谷歌浏览器和IE显示锚点兼容
- 如何创建html文件
- 当html中存在url中如: onclick="toView('参数1')", 参数1是特别字符,如&asop;"' "等时,浏览器解析时会报错。解决方法如文中描述
- HTML块级元素与行级元素
- HTML标签记录
- Html未加载完成时实现动态加载效果
- Html—彩虹社工
- HtmlHelper方法汇集
- HTML DOM getElementsByTagName() 方法
- 【html】【20】高级篇--轮播图[聚焦]
- 【html】【19】高级篇--大事件时间轴
- 【html】【18】高级篇--下拉列表[竖向手风琴]
- 【html】【17】高级篇--loading加载
- 【html】【16】高级篇--毛玻璃效果[模糊]
- 【html】【15】特效篇--分页
- pdf2html 手动编译,解决segmentation fault错误
- C#,xml、html节点数据解析