📅  最后修改于: 2023-12-03 14:52:34.586000             🧑  作者: Mango
Cors (Cross-Origin Resource Sharing) 是浏览器实现的一种安全机制,可以限制客户端网页在浏览器向不同域的服务器发送请求时,对资源的访问。Spring Boot 中默认启用 Cors 设置,但是有些场景下需要禁用 Cors。下面我们将介绍如何在 Spring Boot 中禁用 Cors。
在 WebMvcConfigurer
中注册 CorsFilter
,并将 addCorsMappings()
方法中的访问控制配置设置为 *
,即允许任意域名访问:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("*")
.allowedOrigins("*")
.allowedHeaders("*")
.allowCredentials(true);
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(false);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
说明:
addMapping("/**")
:允许任意请求路径;allowedMethods("*")
:允许所有请求方式,如 GET
、POST
、DELETE
;allowedOrigins("*")
:允许所有域名,可以通过 allowedOriginPatterns
方法设置指定的域名列表;allowedHeaders("*")
:允许所有请求头;allowCredentials(true)
:允许跨域请求时携带 Cookie 等认证信息。在需要禁用 Cors 的接口上使用 @CrossOrigin
注解,并将 origins
属性设为 *
,即允许任意域名访问:
@RestController
public class UserController {
@GetMapping("/users")
@CrossOrigin(origins = "*")
public List<User> getUsers() {
// ...
}
}
说明:
@GetMapping("/users")
:请求路径;@CrossOrigin(origins = "*")
:开启跨域请求,并允许任意域名访问,也可以通过 allowedOriginPatterns
属性设置指定的域名列表。通过以上两种方式,可以在 Spring Boot 中禁用 Cors 设置,以满足特定的业务需求。