Skip to content

Commit 511eb81

Browse files
committed
chore : cors 방지
1 parent ad01899 commit 511eb81

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

src/main/java/com/example/cp_main_be/global/config/SecurityConfig.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.cp_main_be.global.config;
22

33
import com.example.cp_main_be.global.jwt.JwtAuthenticationFilter;
4+
import java.util.Arrays;
45
import lombok.RequiredArgsConstructor;
56
import org.springframework.context.annotation.Bean;
67
import org.springframework.context.annotation.Configuration;
@@ -9,6 +10,9 @@
910
import org.springframework.security.config.http.SessionCreationPolicy;
1011
import org.springframework.security.web.SecurityFilterChain;
1112
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
13+
import org.springframework.web.cors.CorsConfiguration;
14+
import org.springframework.web.cors.CorsConfigurationSource;
15+
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
1216

1317
@Configuration
1418
@EnableWebSecurity
@@ -20,6 +24,7 @@ public class SecurityConfig {
2024
@Bean
2125
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
2226
http.csrf(csrf -> csrf.disable())
27+
.cors(cors -> cors.configurationSource(corsConfigurationSource())) // CORS 설정 추가
2328
.sessionManagement(
2429
session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // 세션 사용 안함
2530
.authorizeHttpRequests(
@@ -39,4 +44,35 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
3944

4045
return http.build();
4146
}
47+
48+
@Bean
49+
public CorsConfigurationSource corsConfigurationSource() {
50+
CorsConfiguration configuration = new CorsConfiguration();
51+
52+
// 모든 출처 허용 (개발 환경)
53+
configuration.addAllowedOriginPattern("*");
54+
55+
// 모든 HTTP 메서드 허용
56+
configuration.setAllowedMethods(
57+
Arrays.asList("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"));
58+
59+
// 모든 헤더 허용
60+
configuration.addAllowedHeader("*");
61+
62+
// 인증 정보 포함 허용 (쿠키, Authorization 헤더 등)
63+
configuration.setAllowCredentials(true);
64+
65+
// preflight 요청 캐시 시간 (초)
66+
configuration.setMaxAge(3600L);
67+
68+
// 응답에서 클라이언트가 접근할 수 있는 헤더 설정
69+
configuration.addExposedHeader("Authorization");
70+
configuration.addExposedHeader("Content-Type");
71+
configuration.addExposedHeader("Accept");
72+
73+
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
74+
source.registerCorsConfiguration("/**", configuration);
75+
76+
return source;
77+
}
4278
}

0 commit comments

Comments
 (0)