重定向时将标题添加到Zuul [英] Adding Headers to Zuul when re-directing

查看:188
本文介绍了重定向时将标题添加到Zuul的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Zuul将呼叫重定向到其他地方的下游系统. 在重定向中,我需要在Header中添加必要的数据,以供api接收要处理的重定向.我似乎无法让下游系统检测到此数据.附件是我的代码. 我正在使用Edgware.SR3, Spring Boot 1.5.12

中的Zuul

Zuul过滤器

@Component
public class RouteFilter extends ZuulFilter{

@Override
public Object run() {
//Testing to add header
    context.getRequest().getParameterMap().put("api", new String[]{"api"});
    context.getResponse().setHeader("api", api);
    context.addZuulResponseHeader("api", "api");
    context.addZuulRequestHeader("api", "api");
    context.setSendZuulResponse(false);
    context.put(FORWARD_TO_KEY, redirect_urls.get(key));
    context.setResponseStatusCode(HttpStatus.SC_TEMPORARY_REDIRECT);
    context.getResponse().sendRedirect(redirect_urls.get(key));
    return null;
}
}

重定向的服务代码

@RequestMapping(value = "/forward")
public ResponseEntity<String> forwardToMe(@RequestHeader(required = true, name = "api")String api){
    return new ResponseEntity<String>("Hi",HttpStatus.OK);
}

邮递员收到错误

{ 时间戳记":1524737817729, 状态":400, 错误":错误请求", "exception":"org.springframework.web.bind.ServletRequestBindingException", "message":缺少类型为String的方法参数的请求标头'api', "path":"/forward"}

解决方案

我猜您使用的是路由过滤器,也许您可​​以尝试使用预过滤器.

添加自定义标头可以通过以下方式完成:context.addZuulRequestHeader("Authorization", "Basic " + credentials);.

对于重定向部分,您可以检查

Redirected Service Code

@RequestMapping(value = "/forward")
public ResponseEntity<String> forwardToMe(@RequestHeader(required = true, name = "api")String api){
    return new ResponseEntity<String>("Hi",HttpStatus.OK);
}

Error Received in Postman

{ "timestamp": 1524737817729, "status": 400, "error": "Bad Request", "exception": "org.springframework.web.bind.ServletRequestBindingException", "message": "Missing request header 'api' for method parameter of type String", "path": "/forward" }

I guess you use a Route Filter, maybe you can try with a Pre Filter.

Adding a custom header can be done with something like this : context.addZuulRequestHeader("Authorization", "Basic " + credentials);.

For the redirection part, you can check this thread

这篇关于重定向时将标题添加到Zuul的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆