[英]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.