在支持 CORS 的同时使用 Spring Boot 和 Spring Security 时,可能会出现某些配置问题,从而导致意外结果。
使用 XMLHttpRequest 发出 GET 请求并使用 CORS 支持时会遇到这样的问题,尽管身份验证凭据不正确,但仍返回 200 状态代码。此行为会导致前端处理 HTTP 状态代码时出现差异。
要解决此问题,在 Spring Security 中显式启用 CORS 支持至关重要。这是通过在 Spring Security 中设置 CORS 来实现的,这使其能够利用 Spring MVC CORS 配置。
对于在控制器级别使用 @CrossOrigin 注释的应用程序,只需启用 Spring Security CORS 支持就足够了。下面的代码演示了这一点:
@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors().and()... } }
对于选择全局 CORS 配置的用户,有必要定义一个 CorsConfigurationSource bean。
@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 Boot 和 Spring Security 中启用,解决了身份验证检查期间未添加正确的 CORS 标头的问题。有关更多详细信息,请参阅有关 CORS 的 Spring Security 官方文档。
以上是如何使用 Spring Security 在 Spring Boot 中正确配置 CORS?的详细内容。更多信息请关注PHP中文网其他相关文章!