如何更改特定内容类型的HTTP标头?

时间:2012-04-10 20:04:49

标签: java internet-explorer ssl richfaces flash

我正在使用RichFaces,我遇到了fileUpload flash组件+ IE + SSL的问题。根据我所做的研究,我需要更改“Pragma”和“Cache-Control”HTTP标头。

如何仅针对Flash内容更改这些标头? 我尝试使用Servlet过滤器。这是doFilter()方法:

chain.doFilter(request, response);
HttpServletResponse resp = (HttpServletResponse) response;
if (resp.getContentType() != null && resp.getContentType().contains("flash")) { // application/x-shockwave-flash
resp.setHeader("Pragma", "");
}

正在执行过滤器,标题正在更改,但随后我用firebug检查,标题返回“no-cache”。这是我web.xml中的最后一个过滤器,但它正好像其他过滤器正在放回标题一样。

我也在使用JBoss 5。 我怎么解决这个问题?感谢。

1 个答案:

答案 0 :(得分:1)

尝试执行指令以在doFilter()之前设置标头。这样:

HttpServletResponse resp = (HttpServletResponse) response;
if ( // .. your test ) {
  resp.setHeader("Pragma", "");
}
chain.doFilter(request, response);

因为一旦服务器开始向客户端发送数据,就无法设置头字段。

当然,您必须找到另一种方法来检查所请求资源的 contentType 。也许您可以根据HttpServletRequest.getRequestURI()和此值中的文件扩展名进行检查。