Spring Boot 2.X优雅的解决跨域问题
在前后端分离的开发模式下,跨域问题是一个常见的问题。在Spring Boot 2.X中,我们可以通过配置来优雅地解决跨域问题。本文将手把手教你如何在Spring Boot 2.X中解决跨域问题,包括配置跨域、使用注解解决跨域等。
1. 配置跨域
在Spring Boot 2.X中,我们可以通过配置来解决跨域问题。可以在WebMvcConfigurer中添加以下配置:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.allowCredentials(true)
.maxAge(3600);
}
}
在上面的配置中,我们使用addMapping方法指定了跨域的路径,使用allowedOrigins方法指定了允许跨域的域名,使用allowedMethods方法指定了允许跨域的请求方法,使用allowedHeaders方法指定了允许跨域的请求头,使用allowCredentials方法指定了是否允许发送Cookie,使用maxAge方法指定了缓存时间。
2. 使用注解解决跨域
在Spring Boot 2.X中,我们还可以使用注解来解决跨域问题。可以在Controller类或方法上添加@CrossOrigin注解,如下所示:
@RestController
public class MyController {
@CrossOrigin(origins = "*", maxAge = 3600)
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}
在上面的示例中,我们在hello方法上添加了@CrossOrigin注解,指定了允许跨域的域名和缓存时间。
3. 示例
以下是一个完整的示例,包括配置跨域和使用注解解决跨域:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.allowCredentials(true)
.maxAge(3600);
}
}
@RestController
public class MyController {
@CrossOrigin(origins = "*", maxAge = 3600)
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}
在上面的示例中,我们在WebMvcConfig中添加了跨域配置,使用了@CrossOrigin注解来解决跨域问题。在MyController中,我们在hello方法上添加了@CrossOrigin注解,指定了允许跨域的域名和缓存时间。
4. 示例2
以下是另一个示例,演示如何使用CorsFilter来解决跨域问题:
@Configuration
public class WebMvcConfig {
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
@RestController
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}
在上面的示例中,我们使用CorsFilter来解决跨域问题。在WebMvcConfig中,我们创建了一个CorsFilter对象,并配置了允许跨域的域名、请求头、请求方法和是否允许发送Cookie。在MyController中,我们没有使用@CrossOrigin注解,而是直接访问/hello路径。
5. 总结
以上是手把手教你Spring Boot 2.X优雅的解决跨域问题的完整攻略。通过配置跨域、使用注解解决跨域等方法,我们可以在Spring Boot 2.X应用程序中解决跨域问题。同时,我们还介绍了如何使用CorsFilter来解决跨域问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot 2.X优雅的解决跨域问题 - Python技术站