前后端分离实现跨域配置

前后端分离实现跨域配置

1、修改前端配置

1.修改.env.development文件
NODE_ENV=development
VUE_APP_PREVIEW=false
VUE_APP_API_BASE_URL=http://localhost:8080/

  • 其中8080是需要请求的端口号
    前后端分离实现跨域配置_第1张图片
2.删除main.js的mock数据挂载,在src目录下打开main.js文件,将import './mock’代码注释

前后端分离实现跨域配置_第2张图片

2、接着修改后端内容

  • 有两中配置方式

    • 注解
    • 配置类
  • 个人建议使用配置类,因为配置类只需要配置一次,对所有的controller层都有效,但是使用注解方式,需要每个controller都进行配置,虽然繁琐,但是比较灵活。

1.配置类
  • 创建config包,创建corsconfig类进行配置,该类为跨域配置类(相关只是了解springboot的自动装配原理)
@Configuration
public class corsconfig {

    @Configuration
    public class CorsConfig {
        private CorsConfiguration buildConfig() {
            CorsConfiguration corsConfiguration = new CorsConfiguration();
            //  你需要跨域的地址  注意这里的 127.0.0.1 != localhost
            // * 表示对所有的地址都可以访问
            corsConfiguration.addAllowedOriginPattern("*");
            //  跨域的请求头
            corsConfiguration.addAllowedHeader("*"); // 2
            //  跨域的请求方法
            corsConfiguration.addAllowedMethod("*"); // 3
            //加上了这一句,大致意思是可以携带 cookie
            //最终的结果是可以 在跨域请求的时候获取同一个 session
            corsConfiguration.setAllowCredentials(true);
            return corsConfiguration;
        }

        @Bean
        public CorsFilter corsFilter() {
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            //配置 可以访问的地址
            source.registerCorsConfiguration("/**", buildConfig()); // 4
            return new CorsFilter(source);
        }
    }
}
  • 注意:由于版本不同,api会有所更改, 报错的话

    corsConfiguration.addAllowedOriginPattern("*");
    

    改为:

    corsConfiguration.addAllowedOrigin("*");
    
2.注解方式
  • 在controller类上添加

    @CrossOrigin(origins = "*",allowCredentials="true",allowedHeaders = "*",methods = {})
    

3、注解和配置类的优缺点

  • 使用配置类,能进行所有controller类进行配置,全局的。
  • 使用注解方式需要对每个comtroller进行单独配置,但能调整每个配置。

你可能感兴趣的:(SpringBoot,常见问题,spring,boot)