繁体   English   中英

使用java servlet api删除http标头

[英]Remove http header using java servlet api

我们使用的是IBM Websphere Application Server 6.1,浏览器是Internet Explorer 8。

我们有一个java servlet,它可以动态生成PDF和MS Word文档。 在第一次尝试时,一些用户说他们正在获得

“Internet Explorer无法打开此站点。请求的站点不可用或无法找到。请稍后再试。”

根据Microsoft支持文章ID 323308
当您尝试通过HTTPS(SSL)IE打开Microsoft Office文档或PDF文档时,IE失败并显示以上错误消息。 如果服务器发送“Cache-control:no-store”标头或发送“Cache-control:no-cache”标头,则会出现此问题。 对于IE8,Microsoft建议在用户Windows XP桌面上添加注册表项。 这对我们来说不太实际,因为我们无法控制用户的桌面。 这不会发生在IE9,Firefox,Chrome等上。

根据PK20531 ,当响应中设置了cookie时,WAS 6.1正在添加Cache-Control:no-cache =“set-cookie,set-cookie2”和Expires HTTP标头。

注 - 我们没有在servlet中设置cookie。 Cookie由单点登录软件设置。

在第一次尝试设置单点登录(LTPA)cookie并且WAS正在添加IE浏览器不喜欢的HTTP标头时。

Java servlet api是否提供了删除http标头的方法? 是否有使用Filter api删除http标头的技术?

如果从响应中删除Cache-Control标头,那么您不会发送有关缓存的任何指令,因此缓存行为将是不可预测的。

最好将标头设置为其他内容,而不是删除 据推测,您希望在浏览器上为您的页面启用缓存。 因此,您可以将这些行添加到servlet中以在浏览器中启用缓存:

response.setHeader("Pragma", "cache");
response.setHeader("Cache-Control", "private, must-revalidate");

您也可以在Filter执行此操作,因为过滤器可以访问HTTP响应对象。 但是如果你已经编写了自己的servlet,那么在servlet中执行它可能会更有效 - 也更清晰。

这一切都是你可以控制的。 如果你不把它放在那里,就没有什么可以删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM