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 관련 헤더들이 추가되어 있는 것이 확인됩니다.
'Middleware > JEUS' 카테고리의 다른 글
JEUS 에서 Spring WebSocket 사용하기 (1) | 2025.02.04 |
---|---|
JEUS DataSource 구성에서 log4jdbc 사용 설정 방법 (0) | 2024.08.14 |
JEUS 환경에 Spring Boot 배포 시 내장 WAS(Tomcat) 제거하는 방법 (0) | 2023.11.07 |
JEUS 에 Application 배포하기 (0) | 2023.04.10 |
JEUS MS(컨테이너) 추가 방법 (0) | 2023.03.14 |
댓글