使用 Spring Boot Spring Security 处理 CORS
将 Spring Boot 与 Spring Security 和 CORS 支持结合使用时,可能会出现意外行为。默认情况下,CORS 预检请求可能会在到达 Spring MVC 之前被 Spring Security 阻止。
配置选项:
要解决此问题,请在 Spring Security 中显式启用 CORS 支持:将以下代码添加到 HttpSecurity 配置中:
@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors().and()... } }
全局 CORS配置:
或者,您可以通过声明 CorsConfigurationSource bean 来定义全局 CORS 配置:
@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors().and()... } @Bean CorsConfigurationSource corsConfigurationSource() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", new CorsConfiguration().applyPermitDefaultValues()); return source; } }
解决 CORS 问题
这种方法取代了之前推荐的基于过滤器的方法。有关更多信息,请参阅 Spring Security 文档的 CORS 部分。
已知问题和解决方法
如果这些配置不能解决问题,请考虑以下解决方法:
[Github问题5834](https://github.com/spring-projects/spring-boot/issues/5834) 提供了一个潜在的解决方案。
以上是如何使用 Spring Boot 和 Spring Security 正确配置 CORS?的详细内容。更多信息请关注PHP中文网其他相关文章!