0. 목표
프론트엔드에서 요청한 api call에 대해 CORS error가 발생하지 않도록 설정을 변경해줍니다.
1. 전체에 대해서 CORS 오류 예외처리 설정하기
application 파일에 소스코드 추가
모든 요청에 대해 CORS 미발생하도록 설정
// vim MyprojApplication.kt
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.context.annotation.Bean
import org.springframework.web.cors.CorsConfiguration
import org.springframework.web.cors.UrlBasedCorsConfigurationSource
import org.springframework.web.filter.CorsFilter
@SpringBootApplication
class MyprojApplication {
@Bean
fun corsFilter(): CorsFilter {
val source = UrlBasedCorsConfigurationSource()
val config = CorsConfiguration()
config.allowedOrigins = listOf("*")
config.allowedMethods = listOf("*")
config.allowedHeaders = listOf("*")
source.registerCorsConfiguration("/**", config)
return CorsFilter(source)
}
}
fun main(args: Array<String>) {
runApplication<MyprojApplication>(*args)
}
2. 일부에 대해서만 CORS 오류 예외처리 설정하기
application 파일에 소스코드 추가
일부 조건에 해당하는 요청에 대해 CORS 미발생하도록 설정
// vim MyprojApplication.kt
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.context.annotation.Bean
import org.springframework.web.cors.CorsConfiguration
import org.springframework.web.cors.UrlBasedCorsConfigurationSource
import org.springframework.web.filter.CorsFilter
@SpringBootApplication
class MyprojApplication {
@Bean
fun corsFilter(): CorsFilter {
val source = UrlBasedCorsConfigurationSource()
val config = CorsConfiguration()
config.allowedOrigins = listOf("http://example.com")
config.allowedMethods = listOf("GET", "POST", "PUT")
config.allowedHeaders = listOf("Authorization", "Content-Type")
source.registerCorsConfiguration("/**", config)
return CorsFilter(source)
}
}
fun main(args: Array<String>) {
runApplication<MyprojApplication>(*args)
}