You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot OAuth2客户端请求响应日志显示headers={masked}问题求助

解决WebClient请求/响应Headers显示{masked}的问题

1. 修正日志配置

确保日志级别覆盖WebClient核心包,且仅指定需要屏蔽的Header:

logging:
  level:
    org.springframework.web.reactive.function.client: TRACE  # 扩大日志范围到WebClient全包
    org.springframework.web.reactive.function.client.ExchangeFunctions: TRACE
  pattern:
    console: "%d [%t] %-5level %logger{36} - %msg%n"
  encoder:
    mask:
      headers:
        - "authorization"  # 仅屏蔽授权头,其余Header正常输出

spring.codec.log-request-details: true

2. 确认WebClient配置生效

检查WebClient构建代码,确保enableLoggingRequestDetails配置正确(以下为Kotlin写法):

@Bean
fun webClient(oauth: OAuth2AuthorizedClientExchangeFilterFunction): WebClient {
    return WebClient.builder()
        .exchangeStrategies(
            ExchangeStrategies.builder()
                .codecs { configurer ->
                    configurer.defaultCodecs().enableLoggingRequestDetails(true)
                }
                .build()
        )
        .filter(oauth)
        .build()
}

Java对应写法:

@Bean
public WebClient webClient(OAuth2AuthorizedClientExchangeFilterFunction oauth) {
    return WebClient.builder()
        .exchangeStrategies(
            ExchangeStrategies.builder()
                .codecs(configurer -> configurer.defaultCodecs().enableLoggingRequestDetails(true))
                .build()
        )
        .filter(oauth)
        .build();
}

3. 排查OAuth2 Filter影响

临时将org.springframework.security.oauth2.client日志级别设为DEBUG,确认授权头正常添加,同时排查该Filter是否存在额外的Header屏蔽逻辑。

4. 检查全局日志屏蔽配置

如果项目使用Logback自定义MaskingFilter或其他日志增强插件,确保这些配置未全局屏蔽所有Header,仅针对authorization头处理。

完成以上配置后重启应用,即可查看除authorization外的完整请求/响应Headers,以及请求体、响应体的详细日志(需日志级别支持)。

内容的提问来源于stack exchange,提问作者Hak Sh.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:37:18