首页 > 解决方案 > Spring Cloud Zuul 网关无法在响应中添加自定义标头

问题描述

我正在尝试使用后过滤器向 Zuul 网关上的 HTTP 响应添加自定义标头:

@Component
public class ResponseFilter extends ZuulFilter {

    private static final Logger logger = LoggerFactory.getLogger(ResponseFilter.class);

    @Override
    public String filterType() {
        return "post";
    }

    @Override
    public int filterOrder() {
        return 1;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        Object correlationId = ctx.get(FilterUtils.CORRELATION_ID);

        if (correlationId != null) {
            logger.info("Adding the correlation id to the outbound headers: {}", correlationId);
            ctx.getResponse().addHeader(FilterUtils.CORRELATION_ID, correlationId.toString());
           // ctx.addZuulResponseHeader(FilterUtils.CORRELATION_ID, correlationId.toString());
        }

        logger.info("Completing outgoing request for {}", ctx.getRequest().getRequestURI());

        return null;
    }
}

application.properties文件:

zuul.prefix=/api
ribbon.eureka.enabled=false
spring.cloud.loadbalancer.ribbon.enabled=false
zuul.ignoredHeaders=
zuul.sensitiveHeaders=

的相关部分pom.xml

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
            <version>1.1.7.RELEASE</version>
        </dependency>

 <dependencies>

网关部署在 Openshift 3.11 上

我遇到的问题是my-correlation-idZuul 忽略了自定义标头(没有出现在响应标头中)。

我究竟做错了什么?

标签: spring-bootopenshiftnetflix-zuul

解决方案


推荐阅读