spring boot 项目代理配置
最近公司需要做一个项目,项目是前后端分离的,前端技术用的vue+element,后端用的是spring boot+shiro,为了开发的方便,项目分为了多个,后端主要提供接口,前段只放页面,在发布的过程中,由于需要跨域访问数据、获取数据,所以会出现跨域的问题。在开发的时候,我们前端开发的时候是有设置vue 代理的(vue代理设置请看我另外的一篇博客),为了后期的方便,我们考虑到前端项目也设置代
最近公司需要做一个项目,项目是前后端分离的,前端技术用的vue+element,后端用的是spring boot+shiro,为了开发的方便,项目分为了多个,后端主要提供接口,前段只放页面,在发布的过程中,由于需要跨域访问数据、获取数据,所以会出现跨域的问题。
在开发的时候,我们前端开发的时候是有设置vue 代理的(vue代理设置请看我另外的一篇博客),为了后期的方便,我们考虑到前端项目也设置代理,并且代理名字配置一样,这样的话,只要把编译后的vue文件,直接放到项目中,就可以访问,减少了很多的工作量,具体配置如下:
1. 在前端项目pom.xml中增加以下依赖:
<dependencies>中增加:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependencyManagement><dependencies>中增加:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix</artifactId>
<version>1.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2. 在项目配置文件中,增加代理配置:
#反响代理配置
#这里的配置类似nginx的反响代理
#当请求/api/**会直接交给listOfServers配置的服务器处理
#当stripPrefix=true的时候 (http://127.0.0.1:8181/api/user/list-> http://192.168.1.100:8080/user/list)
#当stripPrefix=false的时候(http://127.0.0.1:8181/api/user/list-> http://192.168.1.100:8080/api/user/list)
zuul.routes.api.path=/api/**
zuul.routes.api.url=http://localhost:9901
#如果不加这行代码,每次请求都会生成一个新的session
zuul.routes.api.sensitiveHeaders= Authorization
ribbon.eureka.enabled=false
3. 增加过滤器
@Component
publicclass AssZuulFilter extends ZuulFilter{
private static Logger log =LoggerFactory.getLogger(AssZuulFilter.class);
@Override
public Object run() {
// TODO Auto-generated method stub
System.out.println("run");
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
log.info(String.format("%s request to %s",request.getMethod(), request.getRequestURL().toString()));
return null;
}
@Override
public boolean shouldFilter() {
// TODO Auto-generated method stub
System.out.println("shouldFilter");
return true;
}
@Override
public int filterOrder() {
// TODO Auto-generated method stub
System.out.println("filterOrder");
return 1;
}
@Override
public String filterType() {
// TODO Auto-generated method stub
System.out.println("filterType");
return "pre";
}
}
4. 在启动文件Application中配置过滤器启动
@Bean
publicAssZuulFilter assZuulFilter() {
return new AssZuulFilter();
}
请注意在配置代理的时候一定要增加 zuul.routes.api.sensitiveHeaders = Authorization 这一行代码,否则的话,每次请求都会生成一个新的session ,这个问题,一直以为是shiro 的问题,纠结了我好久。
更多推荐
所有评论(0)