ZuulFilter传递标题失败

时间:2017-10-11 02:31:49

标签: spring-cloud netflix-zuul

我已将run()中的ZuulFilter方法重写为

RequestContext ctx = RequestContext.getCurrentContext();
ctx.addZuulRequestHeader('header name', 'value');

但是,在其他服务中,我无法从请求中找到标头。

更多详细信息,filterType"pre",且只有一个过滤器。

2 个答案:

答案 0 :(得分:0)

在Zuul过滤器中添加了标题,

context.addZuulRequestHeader("my-header", "my-value");

可以通过这种方式在另一个过滤器中检索,

context.getZuulRequestHeaders().get("my-header");

我还尝试将我的预过滤顺序保持在较低水平,例如-1000;

您可以检索内部服务(Zuul的客户端)中的标头,就像对任何其他标头一样。常规请求标头和Zuul标头之间没有区别,例如,

@RequestMapping(value = /abc/hello, method = RequestMethod.GET)
public MyObject read(@RequestHeader("my-header") String value) {
    ...
}

答案 1 :(得分:0)

添加标题的示例过滤器:

public class AddHeaderFilter extends ZuulFilter {
    public String filterType() {
        return "pre";
    }

    public int filterOrder() {
        return 100;
    }

    public boolean shouldFilter() {
        return true;
    }

    public Object run() {
        RequestContext context = RequestContext.getCurrentContext();
        context.addZuulRequestHeader('header name', "value");
        return null;
    }

}

然后在应用程序配置中,您必须将过滤器加载为bean:

@Bean
AddHeaderFilter addHeaderFilter() {
    return new AddHeaderFilter();
}