2012-03-29 3 views
4

CORS (Cross-Origin Resource Sharing)로 크로스 도메인 REST 웹 서비스를 만들고 싶습니다. 나는 서비스를 만들기 위해 저지 도서관을 사용하고 있습니다.CORS로 크로스 도메인 REST/저지 웹 서비스

나는 내가 서버 측 관점에서 할 필요가

  1. 어떤 코드/구성 변경 사항을 알 필요가?

  2. HTML5/js에서이 서비스를 호출하는 방법.

감사

+1

은 [CORS 호환 저지와 ContainerResponseFilter와 REST API를] 참조 (http://blog.usul.org/cors-compliant-rest-api-with-jersey-and-containerresponsefilter/) –

답변

9

서버 측 구성에 대한 모든 정보가 enable-cors.org에서 찾을 수 있습니다.

클라이언트 측 코드를 변경할 필요는 없지만 사용하기 전에 CORS 용 브라우저 기능을 확인하는 것이 좋습니다. 테스트 코드는 예를 들어 here과 같습니다.

+0

내 서비스는 Tomcat 6 서버를 통해 배포됩니다. tomcat6 스택에 이러한 헤더를 적용하는 방법. – shashankaholic

+2

@shashankaholic 여기에서보십시오 : http://software.dzhuvinov.com/cors-filter-installation.html – Sirko

+0

고마워요. 나는 이것을 시도 할 것이다. – shashankaholic

5

저지 컨테이너 수준에서 서버 CORS 응답을 제공하여이 문제를 해결하기로 결정했습니다. 이는 자원 처리 코드를 수정하지 않고 컨테이너의 모든 응답을 적용 할 수 있으므로 일부 응용 프로그램에 더 많은 편의를 제공 할 수 있습니다.

먼저 적절한 헤더를 삽입 할 컨테이너 응답 필터를 만들어야합니다. * 모든 응답 : 액세스 제어 - 허용 출처를 표시하는 컨테이너 예

class CORSFilter implements ContainerResponseFilter { 
    @Override 
    public ContainerResponse filter(ContainerRequest request, ContainerResponse response) { 
     response.getHttpHeaders().add("Access-Control-Allow-Origin", "*"); 
     return response; 
    }  
} 

그러면 필터 추가해야

저지 응답 필터 체인에 추가 될 수있다. 이는 응용 프로그램에서 사용중인 자원 구성을 통해 수행 할 수 있습니다.

... 
DefaultResourceConfig rc = new ClasspathResourceConfig(); 
rc.getContainerResponseFilters().add(new CORSFilter()); 

// now create a simple lightweight server using this resource config. 
HttpServer server = HttpServerFactory.create(uri,rc); 
... 
0

저지 기반 임베디드 Jetty 응용 프로그램에서 CORS 필터를 활성화하는 데 사용한 단계.

부두 - 서블릿 버전 -

 <dependency> 
     <groupId>com.thetransactioncompany</groupId> 
     <artifactId>cors-filter</artifactId> 
     <version>2.1.2</version> 
     </dependency> 
치어에서 2.12

  1. 추가 된 corsfilter 의존성
    1. 는 응용 프로그램의 ServletContextHandler에 corsfilter를 추가합니다.
    
    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); 
    
    context.addFilter(CORSFilter.class, "/*", EnumSet.of(DispatcherType.INCLUDE,DispatcherType.REQUEST)); 
    
    server.setHandler(context);//set handle to your server