CORS

kwang·2023년 5월 14일
0

스프링시큐리티

목록 보기
5/5

CORS(교차 출처 리소스 공유)

CORS는 교차도메인 호출의 엄격한 제약조건을 완화하도록 도와주는 기능이다.

기본적으로 하나의 브라우저(클라이언트)에서 최초 접근 도메인과 다른 도메인의 엔드포인트를 호출 시에 이에 대한 동작을 거부한다.

이러할 때 CORS를 이용하여 동작하도록 설정할 수 있다.

CORS는 아래와 같은 헤더 값을 기반으로 동작한다.

header설명
Access-Control-Allow-Origin도메인의 리소스에 접근할 수 있는 외부 도메인을 지정
Access-Control-Allow-Methods특정 HTTP방식만 지정
Access-Control-Allow-Headers특정 요청에 이용가능한 헤더 제한

허용 방법

@CrossOrigin

특정 메서드 또는 클래스에 설정이 가능하며 해당 하는 URL을 허용하도록 설정할 수 있다.

@Controller
@CrossOrigin("http://localhost:8080")
class MainController {
	...
}

config 설정

 @Bean
    fun securityFilterChane(http: HttpSecurity): SecurityFilterChain {
        http.cors {
            val source = CorsConfigurationSource { request ->
                val config = CorsConfiguration()
                config.allowedOrigins = listOf("example.com", "http://localhost:8080")
                config.allowedMethods = listOf("GET", "POST", "PUT", "DELETE")
                return@CorsConfigurationSource config
            }
            it.configurationSource(source)
        }
        
        ...

        return http.build()
    }

프로젝트 설정파일 (jhipster 사용시)

jhipster를 사용하고 있다면 application.properties, application.yml 같은 프로젝트 설정 파일로도 설정이 가능하다.

  cors:
    allowed-origins: 'http://localhost:8100,https://localhost:8100,http://localhost:9000,https://localhost:9000'
    allowed-origin-patterns: 'https://*.githubpreview.dev'
    allowed-methods: '*'
    allowed-headers: '*'

0개의 댓글