java - 非 2xx http 代码的 Servlet 响应过滤器

标签 java jakarta-ee servlets wildfly

我想向来 self 的服务器的 http 响应添加一些 header 。无论返回应用程序的代码(2xx、4xx、5xx)如何,我都需要添加标题。我尝试使用 @WebFilter 注释实现 javax.servlet.Filter 并使用 @Provider 实现 javax.ws.rs.container.ContainerResponseFilter 注释,但方法 doFilterfilter 仅在应用程序返回 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/

相关文章:

java - 只是需要一些关于提高java知识的建议

java - 为每个注册用户创建子域(java EE)

java - Servlet 响应写入与打印?哪个更好?

java - 将样式添加到 tomcat 8 中的目录列表

java - 如何显示同一 View 类中的其他 View ?

java - Spring JPA更新并返回更新后的数据

jakarta-ee - 来自不同 JRE 和服务器版本的远程 EJB 调用

database - 在数据库中记录编辑历史的最佳方式是什么

java - Servlet线程调度

java - 如何使用泰坦 API?