2013-04-18 6 views
6

Jersey 기반 REST 서버에서 CORS 지원을 구현해야합니다. 이용 가능한 material과 유익한 tutorials 중 일부를 살펴 보았습니다. 나는 두 가지 방법 사람들이 사용하는 발견CORS Java 서버 측 구현

접근-1 :

간단하고 직접적인 방법 응답 CORS 헤더를 추가 한 HTTP 필터 (특정 뉴저지)

public class ResponseCorsFilter implements ContainerResponseFilter { 

public ContainerResponse filter(ContainerRequest req, ContainerResponse contResp) { 

     ResponseBuilder resp = Response.fromResponse(contResp.getResponse()); 
     resp.header("Access-Control-Allow-Origin", "*") 
       .header("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); 

     String reqHead = req.getHeaderValue("Access-Control-Request-Headers"); 

     if(null != reqHead && !reqHead.equals(null)){ 
      resp.header("Access-Control-Allow-Headers", reqHead); 
     } 

     contResp.setResponse(resp.build()); 
      return contResp; 
    } 
} 

를 구현 접근법 -2 :

완전히 구현 CORS 즉, 프리 플라이트 (preflight) 요청 처리 및 모든 헤더 지원에 따른다. 그런 오픈 소스 자바 구현의 검사 된 소스 코드 cors-filter

제 질문은 어떤 접근 방식을 취해야합니까? Approach-1 대 Approach-2의 단점은 무엇일까요?

내 사용 사례는 모두 출처/방법이며 허용 될 수 있으며 Authorization HTTP 헤더는 모두 REST 요청의 일부입니다. 기본 CORS 설정의 대부분이 내 유스 케이스로 충분하지만 서버 측에서 CORS 사양을 구현하지 않으면 문제가 생길 수 있습니다.

답변

1

당신의 목적을 위해, # 1 접근법으로 충분합니다. 접근 방식 # 2는 요청 유형에 따라 서로 다른 응답이 있거나 요청 정보의 유효성을 검사하려는 경우에 더 유용합니다. 응답 유형이 모든 요청 유형에서 동일하면 # 1이 좋을 것입니다. 구현은 기본적으로 모든 요청이 성공하도록 허용하기 때문에 요청이 유효한지 확인하기 위해 자체 검사를 수행해야합니다. Authorization 헤더를 허용하고 있으므로이 사실을 알고 있다고 가정하고 인증 토큰의 유효성을 검사하고 있습니까?

+0

감사는, 예 각 요청은 임의의 처리를하기 전에 유효성을 검사 수신에 서버 인증 헤더에 저장된 공개 토큰 태그 할 예정이다. – harsh

관련 문제