三种解决方法
方法一 注解
第一种也是最简单但不常用的一种,只需要在后端接口方法上添加 @CrossOrigin 注解,即可解决对这个接口方法的请求跨域问题,但是在实际开发中一般都会有很多的方法,在每一个方法上都添加这个注解的话明显就会很影响使用感受。当然还可以将注解添加到类上,表示类中的所有方法都解决了跨域问题,但是类也不止一个还是麻烦。
代码语言:javascript复制@CrossOrigin
@GetMapping("/请求名")
public String sayHello() {
return "hello world !";
}
方法二:过滤器统一处理
代码语言:javascript复制import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 使用通配符* 允许所有的域请求
corsConfiguration.addAllowedOrigin("*");
// 使用通配符* 允许所有请求头字段
corsConfiguration.addAllowedHeader("*");
// 使用通配符* 允许所有请求头方法类型
corsConfiguration.addAllowedMethod("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// 处理请求映射
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(source);
}
}
方法三: WebMvc的配置类
代码语言:javascript复制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 WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 设置映射
.allowedOriginPatterns("*") // 设置域
.allowedMethods("*") // 设置请求的方式GET、POST等
.allowCredentials(true) // 设置是否携带cookie
.maxAge(3600) // 设置设置的有效期 秒单位
.allowedHeaders("*"); // 设置头
}
}