Development/Spring Boot3 (Kotlin)

[Kotlin][SpringBoot3] COSR 오류 해결 방법 (초간단)

Tradgineer 2023. 10. 12. 11:16

 

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)
}