SpringSecurity5 默认有效 CORS.
实装时需要指定允许的站点
CORS设置-有效
服务器端
只需添加依赖,默认有效。
- 添加SpringSecurity5 依赖
compile("org.springframework.boot:spring-boot-starter-security")
客户端
新建Boot工程,指定另外的端口
测试src,参照;Ajax测试CORS/ Login / Logout部分
测试
客户端访问,F12调试,出现错误信息
可以看到 CORS 起了作用,端口不可访问。
CORS设置 -无效
服务器端
方式一 @CrossOrigin注解
在服务器的 Controller 上设置 @CrossOrigin 允许所有跨域请求
@CrossOrigin
public String test() {
log.info("This is test log.");
return "Hello!, This is a sample for test API. ";
}
在返回的头上可以看到; Access-Control-Allow-Origin: *
也可以将其放在整个Controller类上,对所有接口设置开放权限
方式二 MVC全局CORS配置
@Configuration
public class MyConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**");
}
};
}
}
方式三 CorsFilter
在服务器端,设置指定的允许admin
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// by default uses a Bean by the name of corsConfigurationSource
.cors().and()
...
}
@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;
}
}
或者
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*");
config.setAllowCredentials(true);
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0);
return new CorsFilter(source);
}
客户端
重新访问测试,成功。