【发布时间】:2011-07-27 00:00:44
【问题描述】:
我们使用的是 IBM Websphere Application Server 6.1,浏览器是 Internet Explorer 8。
我们有一个动态生成 PDF 和 MS Word 文档的 java servlet。在第一次尝试时,一些用户说他们正在获得
“Internet Explorer 无法打开此站点。请求的站点不可用或找不到。请稍后再试。”
根据 Microsoft 支持文章 ID 323308
当您尝试通过 HTTPS (SSL) 打开 Microsoft Office 文档或 PDF 文档时,IE 失败并显示上述错误消息。
如果服务器发送“Cache-control:no-store”标头或发送“Cache-control:no-cache”标头,则会出现此问题。
对于 IE8,微软建议在用户 Windows XP 桌面上添加注册表项。这对我们来说不是很实用,因为我们不控制用户的桌面。 IE9、Firefox、Chrome 等不会发生这种情况。
根据PK20531 WAS 6.1 正在添加 Cache-Control: no-cache="set-cookie, set-cookie2" 和 Expires 响应中设置了 cookie 时的 HTTP 标头。
注意 - 我们没有在 servlet 中设置 cookie。 cookie 由单点登录软件设置。
在设置单点登录 (LTPA) cookie 并且 WAS 正在添加 IE 浏览器不喜欢的 HTTP 标头时的第一次尝试。
Java servlet api 是否提供删除 http 标头的方法?有没有使用Filter api去除http头的技术?
【问题讨论】:
-
Servlet 过滤器能够删除“Cache-contro:no-cache”。但我们决定使用 IBM HTTP Server (apache) mod_headers 删除,它也可以删除单个虚拟主机的标头。
-
你能告诉我你是怎么解决的吗?
-
请参阅下文了解我们如何解决它。编写servlet过滤器(见oracle.com/technetwork/java/filters-137243.html)并设置响应头为“Cache-control:no-cache”
-
我试过这个 response.setHeader("Cache-Control", "max-age=0");。但它没有任何区别我仍然看到 Cache-Control: no-cache
标签: java servlets http-headers