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