【问题标题】:delivery headers by ZuulFilter failZuulFilter 的传递标头失败
【发布时间】:2017-10-11 02:31:49
【问题描述】:

我已经覆盖了ZuulFilter 中的run() 方法

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

但是,在另一个服务中,我无法从请求中找到标头。

更多细节,filterType"pre" 并且只有一个过滤器。

【问题讨论】:

  • 您能否提供更多详细信息。它是什么类型的过滤器(前置、路由、后置)?这是什么顺序?
  • @spencergibb pre 并且只有一个过滤顺序是 0

标签: spring-cloud netflix-zuul


【解决方案1】:

在 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) {
    ...
}

【讨论】:

  • 如何在 Zuul 客户端中获取 ZuulRequestHeaders?
  • 用一个例子更新了我的帖子。
【解决方案2】:

添加标题的示例过滤器:

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();
}

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-08
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多