如何使用 Spring Boot 和 Spring Security 解决 CORS 问题
配置 CORS(跨源资源共享)对于启用跨源资源共享至关重要Spring Boot 应用程序中的原始请求。但是,当使用支持 CORS 的 Spring Security 时,由于浏览器限制,可能会出现错误的服务器响应。
问题:
同时使用 Spring Boot 和 Spring Boot 执行 AJAX 请求时Spring Security,XMLHttpRequest 对象可能会收到带有空响应正文的“0”状态代码,而不是正确的 HTTP 状态代码,例如401.
原因:
此问题是由于身份验证过程中 Spring Security 的重定向行为与初始请求中缺少 CORS 标头之间的冲突而引起的。
解决方案:
现在使用 Spring Security利用 Spring MVC CORS 支持。要解决此问题:
@Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors(); } }
如果需要,您可以使用 CorsConfigurationSource bean 配置全局 CORS 规则:
@Configuration @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; } }
通过启用 Spring Security CORS 支持,它将利用 Spring MVC 中现有的 CORS 配置,并确保将正确的 CORS 标头添加到响应中。
以上是如何使用 Spring Security 修复 Spring Boot AJAX 请求中的'0”状态代码错误?的详细内容。更多信息请关注PHP中文网其他相关文章!