springCloud跨域问题-阿里云开发者社区

开发者社区> 开发与运维> 正文

springCloud跨域问题

简介: 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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章