美文网首页
SpringBoot通过CORS解决前端跨域问题

SpringBoot通过CORS解决前端跨域问题

作者: 榷奕 | 来源:发表于2020-02-14 17:25 被阅读0次

    1. 问题表现

    如果前后端代码部署在不同的服务器上,或者同一个服务器的不同端口上,前端去请求后端数据就有跨域问题。
    端口不一样也是跨域,也会有CORS disable问题。

    2. 前端的调试小记

    (1) CORS调试

    右键,检查,console

    如果是跨域,这里会写,你被CORS阻止了。

    (2) 正常端口调试

    右键,检查,network

    这里面就会有各种发送的请求以及响应。

    3. 跨域问题解决

    (1) 加注解,每个都加,@CrossOrigin

    如果是直接访问,springboot的某一个接口,直接通过端口号去访问,这种只涉及到一个接口的跨域设置,可以在这个接口上打注解。

    (2) springcloud gateway跨域设置

    根源在Webflux上边,由于gateway使用的是webflux,而不是springmvc,所以需要先关闭webflux的cors,再从gateway的filter里边设置cors就行了。

    package net.youqu.micro.service.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.cors.CorsConfiguration;
    import org.springframework.web.cors.reactive.CorsWebFilter;
    import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
    import org.springframework.web.util.pattern.PathPatternParser;
    
    /**
     * description:
     *
     * @author wangpeng
     * @date 2019/01/02
     */
    @Configuration
    public class CorsConfig {
        @Bean
        public CorsWebFilter corsFilter() {
            CorsConfiguration config = new CorsConfiguration();
            config.addAllowedMethod("*");
            config.addAllowedOrigin("*");
            config.addAllowedHeader("*");
    
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
            source.registerCorsConfiguration("/**", config);
    
            return new CorsWebFilter(source);
        }
    }
    

    配置yaml:

    spring:
      cloud:
        gateway:
          discovery:
          # 跨域
          globalcors:
            corsConfigurations:
              '[/**]':
                allowedHeaders: "*"
                allowedOrigins: "*"
                allowedMethods:
                - GET
                  POST
                  DELETE
                  PUT
                  OPTION
    

    相关文章

      网友评论

          本文标题:SpringBoot通过CORS解决前端跨域问题

          本文链接:https://www.haomeiwen.com/subject/ypzdfhtx.html