【发布时间】:2020-03-02 19:47:32
【问题描述】:
我正在尝试实现 Java servlet 过滤器,它会修改 html 响应。
我的过滤器类的doFilter 方法如下所示:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (filterConfig == null) {
return;
}
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String contentType = res.getContentType();
if (contentType != null && contentType.contains("text/html")) {
chain.doFilter(req, res);
// do some modification
}
}
对于每个响应,我都试图弄清楚它是否是 HTML。如果是这样,我做了一些修改,但是我有以下问题:在请求jsf文件时,res.getContentType()返回null(res.getHeader("Content-Type")也返回null)。在我的浏览器的开发工具中,我可以看到“Content-Type”标头的值为“text/html;”。 charset=UTF-8',但为什么res.getContentType() 在这种情况下返回null?
还有其他方法可以检测过滤器中的 HTML 响应吗?
编辑我在 if 子句中添加了 chain.doFilter(req, res) 调用。
【问题讨论】:
-
@BalusC
chain.doFilter(req, res)被调用(参见编辑后的代码),但我认为它应该在 if 子句之前调用,对吧? -
@ℛɑƒæĿ 请注意为什么...我正在尝试获取响应内容并对其进行修改,我需要请求内容做什么?
标签: java jsf content-type servlet-filters