SpringBoot跨域问题

对于前后端分离的项目,跨域问题十分明显。同一协议,同一ip,同一端口,三同中有一不同就产生了跨域。解决办法很简单,在后台配置允许跨域即可:

新建一个配置类CorsConfig,设置其允许跨域,并注入到spring中。

package com.zys.demo.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.cors.reactive.CorsWebFilter;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.util.pattern.PathPatternParser;

/**
 * 跨域配置,允许跨域,可由前台或后端设置,二选一
 */
@Configuration
public class CorsConfig {

    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }


    //配置方式1:使用CorsFilter
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new org.springframework.web.cors.UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }

//    //配置方式2:使用CorsWebFilter
//    @Bean
//    public CorsWebFilter corsFilter() {
//        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
//        source.registerCorsConfiguration("/**", buildConfig());
//        return new CorsWebFilter(source);
//    }


}

代码中有两种配置的方式,若第一种启动报错,就使用第二种。第二种方式可配置SpringCloud网关Gateway的跨域,而使用第一种就会报错。

 

posted @ 2021-01-08 18:46  钟小嘿  阅读(116)  评论(0编辑  收藏  举报