2013-10-15 4 views
2

Google 웹 사이트 (GCE)에서 호스팅하고있는 Dropwizard를 사용하고 있습니다. 8080 - Dropwizard 서버서버 및 웹 사이트에 대한 교차 사이트 출처 정책을 수정하는 방법

UI를 내 dropwizard 서버에서 무엇을 호출하려고, 내가 얻을 : - UI Some.IP.Address

Some.IP.Address :이 2 곳이 현재 활성화 있다는 것을 의미합니다 교차 사이트 원점 오류는 이해할 수 있습니다. 그러나 이것은 나에게 문제가되고있다. 이 문제를 어떻게 해결할 수 있습니까? UI에서 리소스를 완전히 한정 할 필요가 없도록 주소를 스푸핑 할 수 있다면 좋을 것입니다.

$ 갔지 ('/ 제공/업로드/display_information')

아니면 내가 충분히 자격이있는 경우

$ 갔지 :

은 내가 무엇을 찾고 있어요 것은 이것이다 ('http://Some.IP.Address:8080/provider/upload/display_information')

Dropwizard에서이 Google 그룹스 스레드 (https://groups.google.com/forum/#!topic/dropwizard-user/ybDOTOxjlLI)에 대한 원본 필터 설정을 시도했지만 작동하지 않습니다.

+0

[동일한 출처 정책을 우회하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/3076414/ways-to-circumvent-the-same-origin-policy) – Quentin

답변

2

http://Some.IP.Address에 서버에서 제공하는 index.html에는 다음과 같은 jQuery 스크립트가있을 수 있습니다.

$.get('http://Some.IP.Address:8080/provider/upload/display_information', data, callback); 

은 물론 브라우저 인해 동성 원점 정책 (SOP)에 http://Some.IP.Address:8080 액세스 할 수 없습니다. 프로토콜 (http, https)과 호스트 및 포트는 동일해야합니다.

에서 CORS (Cross-Origin Resource Sharing)를 달성하려면 CrossOriginFilter를 서블릿 환경에 추가해야합니다. 이 필터는 서버가 보내는 모든 응답에 일부 액세스 제어 헤더를 추가합니다.

import org.eclipse.jetty.servlets.CrossOriginFilter; 

public class SomeApplication extends Application<SomeConfiguration> { 

    @Override 
    public void run(TodoConfiguration config, Environment environment) throws Exception { 
     FilterRegistration.Dynamic filter = environment.servlets().addFilter("CORS", CrossOriginFilter.class); 
     filter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*"); 
     filter.setInitParameter("allowedOrigins", "http://Some.IP.Address"); // allowed origins comma separated 
     filter.setInitParameter("allowedHeaders", "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin"); 
     filter.setInitParameter("allowedMethods", "GET,PUT,POST,DELETE,OPTIONS"); 
     filter.setInitParameter("preflightMaxAge", "5184000"); // 2 months 
     filter.setInitParameter("allowCredentials", "true"); 

     // ... 
    } 

    // ... 

} 

이 솔루션은 Dropwizard 0.7.0 작동 및 https://groups.google.com/d/msg/dropwizard-user/xl5dc_i8V24/gbspHyl4y5QJ에서 찾을 수 있습니다 : 당신의 Dropwizard 응용 프로그램 쓰기의 실행 방법은.

이 필터는 모든 응답에 일부 액세스 제어 헤더를 추가합니다. CrossOriginFilter의 초기화 매개 변수에 대한 자세한 설명은 http://www.eclipse.org/jetty/documentation/current/cross-origin-filter.html을 참조하십시오.