2019-03-26 SpringBoot项目部署遇到跨域问题,记录一下解决历程

Posted simuhunluo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019-03-26 SpringBoot项目部署遇到跨域问题,记录一下解决历程相关的知识,希望对你有一定的参考价值。

近期SpringBoot项目部署遇到跨域问题,记录一下解决历程。

  1. 要严格限制,允许哪些域名访问,在application.properties文件里添加配置,配置名可以自己起:
    cors.allowed.origin=http://10.xx.253.xx:8081,http://localhost:4200
    做前后端分离的时候,这里允许的域名/IP一般都是前端项目所部署的机器。

  2. 添加一个配置类。@Configuration和@Bean注解一定要加上的。这样SpringBoot在启动的时候才会扫描到你这个类。这里的@Value("${cors.allowed.origin}")引用的就是在application.properties配置的跨域白名单。
@Configuration
public class CorsConfig {

    @Value("${cors.allowed.origin}")
    private String allowedOrigin;

    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.setAllowCredentials(true);
        corsConfiguration.setMaxAge(24 * 3600L);
        if (null != allowedOrigin) {
            String[] origins = allowedOrigin.split(",");
            for (String origin : origins) {
                // 设置访问源地址
                corsConfiguration.addAllowedOrigin(origin);
            }
        }
        // 设置访问源请求头
        corsConfiguration.addAllowedHeader("*");
        // 设置访问源请求方法
        corsConfiguration.addAllowedMethod("*");
        return corsConfiguration;
    }

    /**
     * Cors过滤器.
     */
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 对接口配置跨域设置
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}
  1. 正常情况下,启动项目就可以了。但是在实际中,我在CorsConfig类中打断点,发现并没有去加载这个配置类。于是在Application入口添加了下面的注解@ComponentScan(basePackages = {"com.xxx.xxx.xxx.web.config"})这里参数是CorsConfig所在的包名。这时候启动,在CorsConfig里面打断点就可以进来了。

以上是关于2019-03-26 SpringBoot项目部署遇到跨域问题,记录一下解决历程的主要内容,如果未能解决你的问题,请参考以下文章

react+springBoot 项目部署到腾讯云

SpringBoot项目部署到tomcat

如何将springboot项目打包成jar包并部署到服务器上

docker部署springboot项目

docker部署springboot项目

linux自动部署--docket部署spring web和springboot项目