在 Spring Boot 中解决跨域问题可以采用以下两种方式:
- 使用 @CrossOrigin 注解
在控制器类或方法上添加 @CrossOrigin 注解即可实现跨域访问控制。例如:
@CrossOrigin(origins = "http://localhost:8080")
@RestController
public class MyController {
@GetMapping("/hello")
public String getHello() {
return "Hello, World!";
}
}
这样,客户端就可以从 http://localhost:8080 访问该控制器的 /hello 接口了。
- 配置 CORS 过滤器
在 Spring Boot 中,可以通过配置一个 CORS 过滤器来控制跨域访问。具体做法是在启动类中添加以下代码:
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}
以上代码会将跨域访问策略配置为允许任何来源、任何头部、任何方法,并且允许携带凭证。你也可以根据需要进行调整。
标签:跨域,Spring,Boot,source,FilterRegistrationBean,new,config From: https://blog.51cto.com/u_16018896/8218889