我已将run()
中的ZuulFilter
方法重写为
RequestContext ctx = RequestContext.getCurrentContext();
ctx.addZuulRequestHeader('header name', 'value');
但是,在其他服务中,我无法从请求中找到标头。
更多详细信息,filterType
为"pre"
,且只有一个过滤器。
答案 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();
}