1818import org .springframework .security .crypto .password .PasswordEncoder ;
1919import org .springframework .security .web .SecurityFilterChain ;
2020import org .springframework .security .web .authentication .UsernamePasswordAuthenticationFilter ;
21+ import org .springframework .web .cors .CorsConfiguration ;
22+ import org .springframework .web .cors .CorsConfigurationSource ;
23+ import org .springframework .web .cors .UrlBasedCorsConfigurationSource ;
24+
25+ import java .util .Arrays ;
26+ import java .util .List ;
2127
2228@ Configuration
2329@ EnableWebSecurity
@@ -41,6 +47,7 @@ public PasswordEncoder passwordEncoder() {
4147 public SecurityFilterChain filterChain (HttpSecurity http ) throws Exception {
4248 http
4349 .csrf (AbstractHttpConfigurer ::disable )
50+ .cors (cors -> cors .configurationSource (corsConfigurationSource ())) // CORS 설정 추가
4451 .formLogin (AbstractHttpConfigurer ::disable )
4552 .httpBasic (AbstractHttpConfigurer ::disable )
4653 .sessionManagement (session -> session .sessionCreationPolicy (SessionCreationPolicy .STATELESS ))
@@ -67,4 +74,17 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
6774
6875 return http .build ();
6976 }
77+
78+ @ Bean
79+ public CorsConfigurationSource corsConfigurationSource () {
80+ CorsConfiguration configuration = new CorsConfiguration ();
81+ configuration .setAllowedOrigins (List .of ("http://localhost:5173" , "http://localhost:3000" , "https://www.coditor.xyz" ));
82+ configuration .setAllowedMethods (Arrays .asList ("GET" , "POST" , "PUT" , "PATCH" , "DELETE" , "OPTIONS" ));
83+ configuration .setAllowedHeaders (List .of ("*" ));
84+ configuration .setAllowCredentials (true );
85+
86+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource ();
87+ source .registerCorsConfiguration ("/**" , configuration );
88+ return source ;
89+ }
7090}
0 commit comments