java - 浏览器正在记住页面内容,并且不通过 spring security 检查 html 文件

标签 java javascript browser spring-security

我有一个网络应用程序,它的起始页可以重定向到其他两个页面。起始页没有安全性,一页用于用户级别访问,一页用于管理员访问。它们只是基本的 html 页面,在其上加载了大量的 javascript。

浏览器似乎会记住 html、css 和结构性 javascript 并呈现页面,尽管我的 onload javascript 函数都没有触发,因为它们需要服务器通信,但由于没有登录而导致权限检查失败。

虽然我理解这一点,只需单击刷新即可进入登录页面,但使用该应用程序的其他人可能会感到困惑并关闭它或调用并报告问题。

我正在使用 Spring Security。有没有办法强制 html 通过安全过滤器并阻止浏览器做自己的事情?

最佳答案

应该能够通过在 HTML 本身或响应 header 中设置相关的缓存控制指令来做到这一点。例如:

<%
response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevent caching at the proxy server
%>

(请注意,必须在 JSP 通过执行某些操作来写入输出来提交响应 header 之前设置 header 。因此上面的内容必须位于 JSP 的开头。)

如果这不起作用,您可以使用的另一个技巧是将随机数查询附加到 HTML 页面的 URL 末尾(例如 http://example.com/foo.html?q=<random-number> ),并在每次发送 URL 时更改随机数。

<小时/>

但是,最终您无法强制顽固的浏览器刷新/重新获取页面。因此,最终,您必须接受您的 Javascript 可能无法运行......并且您不应该依赖它来实现您的 Web UI 安全/访问控制检查。 (不是我说的是。只是,不要...)

关于java - 浏览器正在记住页面内容,并且不通过 spring security 检查 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6120444/

相关文章:

browser - Quake Live 背后的技术是什么?

java - 如何使用 JSTL、EL 检查 JSP 页面中浏览器的用户代理?

javascript - 修复 Bootstrap 4 中的页脚?

java - 多层神经网络上的退火:XOR实验

java - 在 ViewHolder 中加载 Imageview

java - com.sun.mail.smtp.SMTPSendFailedException : 530-5. 5.1 需要身份验证(Java 邮件)

javascript - ng-选择 : add an extra option

javascript - TestCafe 中是否有一项功能可以帮助生成附有失败测试用例屏幕截图的报告?

javascript - 它是浏览器对javascript的一种虚拟机吗?

java - 如何为 Spark 1.1.1 应用程序创建 WAR?