Spring Security CORS 跨域资源共享

说明

名称 文档 说明
网关 CORS 跨域资源共享 Spring Cloud Gateway 网关 CORS 跨域资源共享
Security CORS 跨域资源共享 本文
MVC CORS 跨域资源共享 Spring MVC CORS 跨域资源共享
基于注解配置 CORS 注解 CrossOrigin 跨域资源共享

配置

package cloud.xuxiaowei.passport.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;

import java.util.Arrays;

/**
 * @author xuxiaowei
 * @since 0.0.1
 */
@Configuration
public class ResourceServerConfig {

	@Bean
	public SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {

		http.cors(customizer -> {

			CorsConfiguration configuration = new CorsConfiguration();
			configuration.setAllowedOrigins(Arrays.asList("http://127.0.0.1:5173"));
			configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
			configuration.setAllowedHeaders(Arrays.asList("*"));
			configuration.setAllowCredentials(true);
			configuration.setMaxAge(3600L);

			UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
			source.registerCorsConfiguration("/**", configuration);

			customizer.configurationSource(source);
		});

		return http.build();
	}

}