>Java >java지도 시간 >Jersey를 사용하여 JAX-RS에서 CORS 처리를 구현하는 방법은 무엇입니까?

Jersey를 사용하여 JAX-RS에서 CORS 처리를 구현하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-23 20:25:13883검색

How to Implement CORS Handling in JAX-RS with Jersey?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.