Jersey를 사용하는 JAX-RS의 CORS 처리
소개
교차 원본 리소스 공유 (CORS)를 사용하면 웹 애플리케이션과 다른 도메인에서 호스팅되는 리소스 간의 보안 통신이 가능합니다. 도메인 간 요청을 허용하려면 RESTful API에서 CORS 처리가 필수적입니다. JAX-RS는 사용자 정의 필터를 사용하여 CORS를 처리하기 위한 편리한 메커니즘을 제공합니다.
Jersey 2.x에 대한 필터 구현
Jersey 2.x에서는 ContainerResponseFilter를 사용할 수 있습니다. 응답에 CORS 헤더를 추가합니다. 다음 필터는 필요한 헤더를 추가합니다.
import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.core.MultivaluedMap; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { MultivaluedMap<String, String> headers = responseContext.getHeaders(); headers.add("Access-Control-Allow-Origin", "*"); headers.add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With"); headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); } }
필터 등록
CORS 필터는 다음과 같이 ResourceConfig에 등록할 수 있습니다.
final ResourceConfig resourceConfig = new ResourceConfig(); resourceConfig.register(CORSFilter.class);
저지 필터 구현 1.x
Jersey 1.x의 경우 ContainerResponseFilter도 사용할 수 있습니다.
import com.sun.jersey.spi.container.ContainerResponseFilter; import com.sun.jersey.spi.container.ContainerResponse; import com.sun.jersey.spi.container.ContainerRequestContext; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public ContainerResponse filter(ContainerRequestContext requestContext, ContainerResponse response) { response.getHttpHeaders().add("Access-Control-Allow-Origin", "*"); response.getHttpHeaders().add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With"); response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); return response; } }
Jersey 1.x용 Web.xml 구성
web.xml에서 다음과 같이 필터를 구성합니다.
<init-param> <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name> <param-value>com.yourpackage.CORSFilter</param-value> </init-param>
위 내용은 Jersey를 사용하여 JAX-RS에서 CORS 처리를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!