如何在 Spring Boot 中在 Spring Security 级别启用 CORS [关闭]
Posted
技术标签:
【中文标题】如何在 Spring Boot 中在 Spring Security 级别启用 CORS [关闭]【英文标题】:How to enable CORS at Spring Security level in Spring boot [closed] 【发布时间】:2018-08-02 05:57:36 【问题描述】:我正在使用一个使用 Spring 的 Spring Boot 应用程序 安全。我试过@CrossOrigin 来启用cors,但没有成功。
如果你想找到我的错误,请参考this
Spring Blogs 表示,当我们使用 spring security 时,我们必须在 spring 安全级别启用 cors。
我的项目在下面。
谁能解释我应该把这些配置放在哪里以及如何找到弹簧安全级别。
【问题讨论】:
我尝试过的可以从上面的链接中看到我之前的堆栈问题。 Gamage 我已经回答了这个问题***.com/questions/44067871/… 进一步参考这个spring.io/blog/2015/06/08/cors-support-in-spring-framework 问题已解决。在***.com/questions/48919460/…上查看我的答案 【参考方案1】:这是使用 Spring BOOT 1.5 使 Spring Security 4.1 支持 CROS 的一种方法
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter
@Override
public void addCorsMappings(CorsRegistry registry)
registry.addMapping("/**")
.allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
与
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter
@Override
protected void configure(HttpSecurity http) throws Exception
// http.csrf().disable();
http.cors();
@Bean
public CorsConfigurationSource corsConfigurationSource()
final CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(ImmutableList.of("*"));
configuration.setAllowedMethods(ImmutableList.of("HEAD", "GET", "POST", "PUT", "DELETE", "PATCH"));
configuration.setAllowCredentials(true);
configuration.setAllowedHeaders(ImmutableList.of("Authorization", "Cache-Control", "Content-Type"));
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
【讨论】:
这里的 ImmutableList 是什么? 我已经找到了解决方案并将其插入到我之前的帖子中。我不被允许回答这个问题。谢谢@henchiri 和Sibin cms,因为它结合了您的答案。两者都 +1【参考方案2】:带有 Spring Security 的 CORS:
要通过 Spring 安全性启用 CORS 支持,请配置 CorsConfigurationSource bean 并使用 HttpSecurity.cors() 配置。
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
@Override
protected void configure(HttpSecurity http) throws Exception
http.cors().and()
//other config
@Bean
CorsConfigurationSource corsConfigurationSource()
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("https://example.com"));
configuration.setAllowedMethods(Arrays.asList("GET","POST"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
参考,https://howtodoinjava.com/spring-boot2/spring-cors-configuration/
【讨论】:
@LahiruGamage 没关系,它和其他任何东西一样都是 Spring bean,所以只要它在相对于主类的(子)包中,它就可以工作。 我已经找到了解决方案并将其插入到我之前的帖子中。我不被允许回答这个问题。谢谢henchiri和@Sibin,因为它结合了您的答案。两者都 +1http.cors().and()...
中的点应该写什么?以上是关于如何在 Spring Boot 中在 Spring Security 级别启用 CORS [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
无法连接到我本地 Spring Boot 中在 docker 上运行的 redis sentinel
如何在单个 JUnit 测试中运行两个 Spring Boot 微服务?
Spring boot的Controller类是如何指定HTML页面的