- 一、 添加 CorsConfig 配置类
- 二、重写 webMvcConfigurer 中的 addCorsMapping
后端全局配置解决跨域问题的方式有下面两种,二选一即可。
一、 添加 CorsConfig 配置类
①定义一个类,加上@Configuration注解,表明这个类是SpringBoot的配置类;
②在CorsFilter中,定义相关跨域配置。
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.filter.CorsFilter;
@Configuration
public class CorsConfig {
// 当前跨域请求最大有效时长。这里默认1天
private static final long MAX_AGE = 24 * 60 * 60;
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址
corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头
corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法
corsConfiguration.setMaxAge(MAX_AGE);
source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置
return new CorsFilter(source);
}
}
二、重写 webMvcConfigurer 中的 addCorsMapping
①定义一个类,加上@Configuration注解,表明这个类是SpringBoot的配置类;实现WebMvcConfigurer接口
②重写addCorsMappings方法,并且调用相应的方法,允许前端的请求发送到后端。
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
// 重写 addCoresMapping 方法
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 1.对所有请求路径格式进行跨域处理
.allowedHeaders("*") // 2.允许任意请求头
.allowedMethods("*") // 3.允许任意请求方法 get post head delete put
.maxAge(1800) // 4.设置跨域有效期
.allowedOrigins("http://localhost:8080"); // 5.支持的域名 --- 这里我的前端是8080端口,后端是9090
}
}