• spring could 微服务 跨域问题(CORS )


    问题发现

    正常情况下,跨域是这样的:
    1. 微服务配置跨域+zuul不配置=有跨域问题
    2. 微服务配置+zuul配置=有跨域问题
    3. 微服务不配置+zuul不配置=有跨域问题
    4. 微服务不配置+zuul配置=ok

    然而云环境中每个服务自己有跨域解决方案,而网关需要做最外层的跨域解决方案.如果服务已有跨域配置网关也有,会出现*多次配置问题。

    Access-Control-Allow-Origin:"*,*"

    也就是multiple Access-Control-Allow-Origin
    !!!所以我们就要,微服务配置+zuul配置=解决跨域问题

    zuul的跨域忽略配置

    使用ZUUL配置忽略头部信息

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

    微服务应用的跨域配置

    @Slf4j
    @Configuration
    public class CorsConfig {
        private CorsConfiguration buildConfig() {
            CorsConfiguration corsConfiguration = new CorsConfiguration();
            corsConfiguration.setAllowCredentials(true);
            // 允许任何域名使用
            corsConfiguration.addAllowedOrigin("*");
            // 允许任何头
            corsConfiguration.addAllowedHeader("*");
            // 允许任何方法(post、get等)
            corsConfiguration.addAllowedMethod("*");
            return corsConfiguration;
        }
    
        @Bean
        public CorsFilter corsFilter() {
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            // 对接口配置跨域设置
            source.registerCorsConfiguration("/**", buildConfig());
            return new CorsFilter(source);
        }
    
    }

    如果上面不行再配置文件中再加上这

    spring:
      aop:
        auto: true
        proxy-target-class: true
      application:
        name: service-zuul
      cloud:
        gateway:
          globalcors:
            corsConfigurations:
              '[/**]':
                allowedHeaders: '*'
                allowedMethods: '*'
                allowedOrigins: '*'

    只要网关配置就好 , 底下的服务不需要配置。
    两个同时配置还导致了 跨域失败 适得其反。

    关于zuul 的配置 github上有   https://github.com/wangbensen/common-parent.git

  • 相关阅读:
    Vue打包之后部署到 express 服务器上
    Vue 点击事件传递原生DOM事件?
    CSS hover 改变另外一个元素状态
    element-UI el-table二次封装
    element-UI el-table添加序号列时序号永远都是从1开始?
    element-UI el-table表格根据搜索条件表格值改变颜色
    HTML head meta标签详细
    CodeForces 489C Given Length and Sum of Digits... (dfs)
    CodeForces 489B BerSU Ball (水题 双指针)
    Codeforces 489A SwapSort (水题)
  • 原文地址:https://www.cnblogs.com/xiaowangbangzhu/p/12048828.html
Copyright © 2020-2023  润新知