"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Jersey를 사용하여 JAX-RS의 CORS 문제를 해결하는 방법은 무엇입니까?

Jersey를 사용하여 JAX-RS의 CORS 문제를 해결하는 방법은 무엇입니까?

2024년 12월 21일에 게시됨
검색:219

How to Solve CORS Issues in JAX-RS with Jersey?

Jersey를 사용하여 JAX-RS로 CORS 처리

문제: 요청을 처리하는 동안 CORS 문제가 발생했습니다. JAX-RS 및 Jersey를 사용합니다. 특히 서버가 필요한 CORS 헤더를 설정하지 않아 "요청한 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다."라는 오류가 발생합니다.

해결책: Jersey를 사용하여 JAX-RS에서 CORS를 처리하려면 ContainerResponseFilter를 구현해야 합니다. 구현의 차이는 Jersey 1.x를 사용하는지 2.x를 사용하는지에 따라 다릅니다.

Jersey 2.x:

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.MultivaluedMap;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
        MultivaluedMap headers = responseContext.getHeaders();
        headers.add("Access-Control-Allow-Origin", "*");
        headers.add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        headers.add("Access-Control-Allow-Credentials", "true");
        headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    }
}

저지 1.x:

import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public ContainerResponse filter(ContainerResponse response) {
        response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHttpHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true");
        response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");

        return response;
    }
}

추가 참고 사항:

  • CORS 필터가 ResourceConfig 객체에 등록되어 있는지 확인하세요.
  • 더 나은 처리를 위해 단순 CORS 요청과 실행 전 CORS 요청을 구별하는 더욱 강력한 구현입니다.
  • 보다 포괄적인 내용은 RESTeasy의 CORSFilter 구현을 참조하세요. 예.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3