TRACE请求不经过springBoot的自定义过滤器
时间: 2024-12-12 19:20:36 浏览: 13
基于SpringBoot自动装配实现的对于OpenFeign扩展请求传递traceId,分布式服务日志查询串联标记
5星 · 资源好评率100%
TRACE HTTP方法通常用于诊断网络链路,因为它会发送出包含所有中间节点信息的详细通信痕迹。在Spring Boot应用中,如果你配置了一个全局的HTTP过滤器链,TRACE请求默认会被这个链路处理,包括那些自定义的过滤器。
然而,Spring Boot对TRACE请求的处理有一些特殊规则。默认情况下,对于`trace`、`options`和`connect`这三种HTTP方法,Spring Security的`WebSecurityConfigurerAdapter`不会启用安全检查,也不会通过其他已注册的过滤器链。因此,TRACE请求不会像GET、POST等常规请求那样经过所有的自定义过滤器。
如果你确实不希望TRACE请求触发自定义过滤器,一种做法是在过滤器配置中明确排除这些特定的HTTP方法:
```java
import org.springframework.web.filter.OncePerRequestFilter;
public class CustomFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if (!"TRACE".equals(request.getMethod())) { // 只处理非TRACE请求
super.doFilterInternal(request, response, filterChain);
}
}
}
```
在这个例子中,`CustomFilter`只会对非TRACE请求生效。
阅读全文