zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CMake 3.8.2 Online Manuals
    如何查找UDID
    产品经理那些事儿学习整理笔记
    IOS KVO与NSNotificationCenter简单使用
    整理分享内容
    iOS解决两个静态库的冲突 duplicate symbol
    IOS 添加libMobileVLCKit .a到项目中编译问题
    OpenERP为form和tree视图同时指定view_id的方法
    openerp related字段解读
    openerp图片路径处理
  • 原文地址:https://www.cnblogs.com/xiaowangbangzhu/p/12048828.html
Copyright © 2011-2022 走看看