springboot高版本跨域问题
时间: 2023-10-14 07:17:34 浏览: 94
springboot vue 跨域问题的解决
在Spring Boot高版本中,跨域问题可以通过添加CORS(跨域资源共享)配置来解决。
1. 添加依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
```
2. 配置CORS
在Spring Boot中,可以通过添加@Configuration注解和@EnableWebMvc注解来配置CORS:
```
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true)
.maxAge(3600);
}
}
```
以上代码配置了允许所有来源的请求(allowedOrigins("*")),允许的请求方法为GET、POST、PUT和DELETE(allowedMethods("GET", "POST", "PUT", "DELETE")),允许的请求头为所有(allowedHeaders("*")),允许携带凭证(allowCredentials(true)),并设置了缓存时间为3600秒(maxAge(3600))。
3. 配置全局拦截器
在Spring Boot中,还可以通过配置全局拦截器来解决跨域问题:
```
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new CorsInterceptor())
.addPathPatterns("/**");
}
}
```
以上代码配置了一个全局拦截器CorsInterceptor,拦截所有请求(addPathPatterns("/**"))。
4. 配置Filter
在Spring Boot中,还可以通过配置Filter来解决跨域问题:
```
@Bean
public FilterRegistrationBean<CorsFilter> corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}
```
以上代码配置了一个CorsFilter,允许所有来源的请求(config.addAllowedOrigin("*")),允许所有请求头(config.addAllowedHeader("*")),允许所有请求方法(config.addAllowedMethod("*")),并设置了允许携带凭证(config.setAllowCredentials(true))。
阅读全文