본문 바로가기
Middleware/JEUS

JEUS 내장 CORS Filter 사용 가이드

by nxCore 2025. 2. 5.

 




JEUS 8 버전 부터 CORS 환경에 필요한 헤더 처리를 편리하게 하기 위해 CORS Filter 가 내장되어 제공되고 있습니다.

본 포스팅은 JEUS 내장 CORS Filter 를 사용하는 방법을 기술합니다.



1. 공통 설정 항목

JEUS 내장 CORS Filter 에서 설정이 가능한 Parameter 들은 다음과 같습니다.

Header Name Description
Allow-Origins 접근을 허용할 URL 주소를 정의합니다.
Allow-Methods 접근을 허용할 Method 목록을 정의합니다.
Allow-Headers 본 요청에서 허용할 Request Header 목록을 정의하며, 이 헤더들은 Preflight 응답에 포함됩니다.
Expose-Headers 기본적으로 허용된 헤더 외, Front-end 에서 접근할 수 있는 헤더(Custom Header)들을 정의합니다.
Allow-Credentials Credentialed Request 처리 여부에 따라 true 또는 false 를 설정합니다.
Max-Age Preflight 응답에 대한 브라우저 캐시 유효시간을 설정합니다.

    *참고 : Origins, Methods, Headers 설정은 Comma(‘,’) 문자로 여러 개를 정의할 수 있습니다.

Application 의 구성에 따라 web.xml 설정 방식 또는 FilterRegistrationBean 설정 방식 중 하나를 선택하여 사용하면 됩니다.

 

2. web.xml 설정 방법

web.xml descriptor 파일에 Filter 를 등록하여 사용하는 방법입니다.

web.xml 에 JEUS 에서 제공하는 CORS Filter 를 등록하고, 필요한 Parameter 들을 추가로 설정해주시면 됩니다.

 

[web.xml 설정 예시]

<web-app>
      <filter>
             <filter-name>JEUSCORSFilter</filter-name>
             <filter-class>jeus.servlet.filters.CORSFilter</filter-class>
             <init-param>
                     <param-name>Allow-Origins</param-name>
                     <param-value>https://example.com, https://test.com</param-value>
             </init-param>
             <init-param>
                     <param-name>Allow-Methods</param-name>
                     <param-value>GET, POST, HEAD, OPTIONS</param-value>
             </init-param>
             <init-param>
                     <param-name>Allow-Headers</param-name>
                     <param-value>Header1, Header2</param-value>
             </init-param>
             <init-param>
                     <param-name>Expose-Headers</param-name>
                     <param-value>Header3, Header4</param-value>
             </init-param>
             <init-param>
                     <param-name>Allow-Credentials</param-name>
                     <param-value>false</param-value>
             </init-param>
             <init-param>
                     <param-name>Max-Age</param-name>
                     <param-value>3600</param-value>
             </init-param>
      </filter>
      <filter-mapping>
             <filter-name>JEUSCORSFilter</filter-name>
             <url-pattern>/*</url-pattern>
      </filter-mapping>
</web-app>

 

 

3. FilterRegistrationBean 설정 방법

FilterRegistrationBean 을 정의하여 JEUS CORSFilter 를 등록하는 방법입니다.

프로젝트 IDE 에서 JEUS CORS Filter 를 import 해서 사용하기 위해 JEUS 에 내장되어 있는 라이브러리를 가져옵니다.

Filter class 가 들어있는 라이브러리의 경로는 $JEUS_HOME/lib/system/jeus-servlet-engine.jar 이며, 외부 라이브러리 추가 후 사용하시면 됩니다.

다음과 같이 @Configuration Annotation 을 사용하여 Config 클래스를 별도 정의합니다.

 

[FilterRegistrationBean 설정 예시]

import jeus.servlet.filters.CORSFilter;
 
@Configuration
public class JEUSCORSFilterConfig {
 
      @Bean
      public FilterRegistrationBean<Filter> jeuscorsFilterRegistration() {
             FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
             bean.setFilter(new CORSFilter());
             bean.setName("JEUSCORSFilter");
             bean.setOrder(1);
            
             bean.addUrlPatterns("/*");
             bean.addInitParameter("Allow-Origins", "https://example.com");
             bean.addInitParameter("Allow-Methods", "GET, POST, HEAD, OPTIONS");
             bean.addInitParameter("Allow-Headers", "Header1, Header2");
             bean.addInitParameter("Expose-Headers", "Header3, Header4");
             bean.addInitParameter("Allow-Credentials", "false");
             bean.addInitParameter("Max-Age", "3600");
            
             return bean;
      }
}

 

4. 테스트 결과

위 가이드 예시와 동일한 설정으로 테스트 했을 때의 결과입니다.

Postman 을 이용하여 web.xml Filter 설정에 추가된 Origin 도메인 중 하나를 Request Header 에 Origin 을 추가하여 Request 를 보냅니다.

 

[Origin 헤더를 추가하지 않고 서버에 요청을 보냈을 때]

Origin 헤더를 제외 후 요청을 보내게 되면, 하단의 Response Header 목록에 CORS 관련 헤더들이 존재하지 않는 것을 볼 수 있습니다.

 

[Origin 헤더를 추가하여 서버에 요청을 보냈을 때]

Origin 헤더를 포함하여 요청을 보내게 되면, 하단의 Response Header 목록에 CORS 관련 헤더들이 추가되어 있는 것이 확인됩니다.

 

댓글