Spring Security CORS 不工作

Posted

技术标签:

【中文标题】Spring Security CORS 不工作【英文标题】:Spring Security CORS not working 【发布时间】:2018-07-13 05:34:11 【问题描述】:

我有以下配置,基于此处的示例https://docs.spring.io/spring-security/site/docs/current/reference/html/cors.html

@Override
public void configure(HttpSecurity http) throws Exception 
    http
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
            .csrf().disable()
            .cors();


@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;

但是当我对此进行测试时,我仍然可以从本地主机访问它,这没有问题。就像根本没有激活cors一样。

编辑:我应该补充一点,我正在使用 Spring OAuth2,这个配置位于我的ResourceServerConfigurerAdapter

【问题讨论】:

这对我没有任何改变。如果有什么不只是允许任何起源?我正在尝试测试不被允许。 @dur Firefox 和邮递员使用localhost:8080/ 也许您需要将@CrossOrigin 添加到您的控制器 我认为问题可能是因为我使用的是 Spring OAuth2,所以它忽略了 web mvc 级别的 cors 配置。即使我在我的ResourceServerConfigurerAdapter 中声明了cors(),但我不确定它是否会接受它 @zero01alpha 但是当我测试它时,我仍然可以从本地主机访问它,没有问题。您的请求是否包含origin 标头?如果您的页面是从另一台服务器加载的,Firefox 应该会自动执行此操作。使用 Firefox 中的开发工具检查请求标头。 【参考方案1】:

你有没有用@component 注释你的类?那是您正在初始化 CORS 过滤器的类?

【讨论】:

以上是关于Spring Security CORS 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Spring、CORS 和 j_spring_security_logout

Spring Security Logout 不适用于 Spring 4 CORS

Spring 4 Security + CORS + AngularJS - 奇怪的重定向

Tomcat 8 和 Spring Security Cors

Angular 1.4、POST、Spring Security、CORS

Spring-Security OAuth WebMVC 无效的 CORS 请求