gpt4 book ai didi

java - 使用 java servlet api 删除 http header

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:56 26 4
gpt4 key购买 nike

我们使用的是 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” header 或发送“Cache-control:no-cache” header ,则会出现此问题。对于 IE8,Microsoft 建议在用户 Windows XP 桌面上添加注册表项。这对我们来说不是很实际,因为我们不控制我们的用户桌面。 IE9、Firefox、Chrome 等不会发生这种情况。

根据 PK20531 WAS 6.1 正在添加 Cache-Control: no-cache="set-cookie, set-cookie2"和 Expires响应中设置了 cookie 时的 HTTP header 。

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

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

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

最佳答案

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

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

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

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

关于java - 使用 java servlet api 删除 http header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6838050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com