我想向来 self 的服务器的 http 响应添加一些 header 。无论返回应用程序的代码(2xx、4xx、5xx)如何,我都需要添加标题。我尝试使用 @WebFilter
注释实现 javax.servlet.Filter
并使用 @Provider 实现
注释,但方法 javax.ws.rs.container.ContainerResponseFilter
doFilter
和 filter
仅在应用程序返回 200 http 状态代码时调用。是否可以对非 2xx 响应使用过滤器?
我正在使用 Wildfly 8.2.0 作为应用服务器,但我认为这并不重要
编辑
我想我应该提供有关我的问题的更多信息。我的应用程序是由 Resteasy 实现的 REST 服务。我还使用 Wildlfy 安全子系统为授权配置了安全策略。我需要来自 REST 服务的响应始终包含来自前端的每个请求的 CORS header ,即使客户端没有通过授权检查。但是,当响应代码为 401 时,即使我使用 DispatcherType.ERROR
,也不会调用过滤器方法,如何建议 @Steve C。
所以,我不返回任何状态代码,所有代码都返回服务器(比如 @ACV)。也许这是因为过滤器不适用于我的情况。
编辑二
我在 this question 中找到了部分答案.通过在 Wildfly standalone.xml 中配置 undertow 子系统,可以将 header 添加到所有非错误(非 5xx)响应
最佳答案
您需要包含 DispatcherType在您的@WebFilter 声明中:
@WebFilter(urlPatterns={...}, dispatcherTypes={ERROR, REQUEST, ...})
public class ...
关于java - 非 2xx http 代码的 Servlet 响应过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31806351/