【发布时间】:2017-07-14 10:04:35
【问题描述】:
我正在开发一个使用 https 连接运行 Java Struts v.1 和 WebSphere v.8.5 作为服务器的遗留应用程序。我正在尝试使应用程序在其安全性方面达到合规性。我们需要使用此应用程序完成的任务之一是在每个现有页面上添加反缓存响应标头:
Cache-Control: no-cache, no-store
Expires: 0
Pragma: no-cache
我已经设法添加了标题,尽管通过启用标题我们看到后退按钮功能在使用 HTTP POST 请求的页面中不再正常工作。我们正在为各自的浏览器显示以下页面:
IE:
网页已过期
最可能的原因:
•此网页的本地副本已过期,网站要求您重新下载。
尝试一下: 单击工具栏上的刷新按钮以重新加载页面。 刷新后,您可能需要再次导航到特定网页, 或重新输入信息。
铬:
确认重新提交表单
此网页需要您之前输入的数据才能正确显示。 您可以再次发送此数据,但这样做会重复此页面之前执行的任何操作。 按重新加载按钮重新提交加载页面所需的数据。
ERR_CACHE_MISS
如果在显示这些屏幕后刷新页面,我们将导航回最初想要的页面。
调查这个问题似乎是
cache-control : no-cache, no-store
点击后退按钮时,错误页面应归咎于标题。
因此我的问题是,如果在维护标题或添加允许用户使用后退按钮而不会从浏览器看到错误屏幕然后必须刷新页面的情况下,是否有任何解决方法.还是我只需要从缓存控制标头中排除使用 POST 调用的页面?
需要注意的几点:
-元标记被认为不足以修复此安全漏洞。 HTML Meta Tags and HTTP Headers
-我也尝试添加其他 cache-control 标头,但它们都没有解决后面的问题:
must-revalidate
age
post & pre-checks
etc...
感谢任何见解和帮助。先感谢您。
【问题讨论】:
标签: java http security caching cache-control