springCloud跨域问题

天空的星星 2019-01-19

分布式 web 配置 Annotation bean source springmvc 网关 跨域 springcloud zuul

前几天解决了springMVC的跨域问题后,领导叫我解决另一个springboot项目的跨域。按照之前的思路,添加了一个filter,结果不好使。使用@CrossOrigin注解,不好使。配置一个CorsConfiguration,同样不好使。三种方法全部没用。我仔细想了一下,忽然意识到这其实是一个springCloud分布式项目的一个服务,里面配置了网关,所有的请求先通过网关再发到对应的服务上,于是百度“springCloud 分布式 跨域”几个关键词,按下面的方法解决了问题:
1、在网关服务中添加下面的配置:

zuul:
  #需要忽略的头部信息,不在传播到其他服务
  sensitive-headers: Access-Control-Allow-Origin
  ignored-headers: Access-Control-Allow-Origin,H-APP-Id,Token,APPToken

2、同样是在网关服务中添加下面的配置代码:

package com.ns.common.util.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("x-access-token");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setMaxAge(3600L);
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
     }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/phr/**", buildConfig()); //---------1
        return new CorsFilter(source);
    }
}

测试返回结果:
image

登录 后评论
下一篇
我是小助手
31362人浏览
2019-07-31
相关推荐
博客汇总
1494人浏览
2018-04-11 22:03:19
Spring Cloud Zuul(路由网关)
1412人浏览
2018-08-28 15:14:00
SpringBoot学习目录
1126人浏览
2017-11-28 19:03:00
SpringCloud学习之soa基础
1049人浏览
2017-11-13 11:36:00
1
0
0
3090