上一章提到在HTTP Response中添加头的问题,如果在微服务里面添加,比如UserService项目,则每个项目都需要做重复的工作。每次遇到这样的情况,那肯定会有更好的解决方案。在前端的反向带来服务统一添加,就是一个更好的方案。这样每个微服务只需要解决自己关心的领域问题。基本思路就是在反向代理上面添加一个过滤器,对每个HTTP响应都增加一个头。
Spring Cloud提供了Zuul的集成,只需要在http://start.spring.io/中添加对zuul的依赖,就可以通过简单的配置使用zuul了。Spring提供的官方文档如下:
http://cloud.spring.io/spring-cloud-netflix/
https://spring.io/guides/gs/routing-and-filtering/
package com.healtrav; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; import org.springframework.context.annotation.Bean; @EnableZuulProxy @SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } @Bean public PostFilter postFilter() { return new PostFilter(); } }
package com.healtrav; import javax.servlet.http.HttpServletResponse; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; public class PostFilter extends ZuulFilter { @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(); HttpServletResponse response = ctx.getResponse(); response.addHeader("Access-Control-Allow-Origin", "*"); return null; }<a target=_blank href="http://blog.csdn.net/cuiwader/article/details/52806589">用Spring Boot & Cloud,Angular2快速搭建微服务web应用 - 增加权限控制</a> }