2014-04-01 2 views
0

나는 클라이언트가 다른 도메인에 요청하는 GWT 적용을 가지고있다. GWT에서 RequestBuilder를 사용하여 요청을 작성했습니다. 호출 측 서버에서 CORS 용 헤더를 추가 할 수 있습니까?

No 'Access-Control-Allow-Origin' header is present on the requested resource. 

그래서 내가 구글과 나는 도메인이 내가 요청이 전송하는 응답이 헤더를 추가해야하고하고있는 것을 발견 : 코드를 실행에

, 내 브라우저에 오류가 . 이제는 다른 도메인의 서버를 제어 할 수 없으므로 수정을 할 수 없습니다.

제 질문은, 클라이언트에 보내기 전에 제 서버의 다른 도메인 서버에서 보내는 응답에 응답과 액세스 제어 허용 허용 원 헤더를 가로 챌 수 있습니까? 필터를 사용해 보았지만 다른 도메인에서 오는 응답에 대해 필터가 호출되지 않습니다.

이 작업을 수행 할 수 있습니까? 누락되었거나 불가능합니다.

답변

1

CORS 메커니즘을 제외하고는 브라우저에서 상호 도메인 요청을 허용하지 않는 Vivek의 답변이 지원되므로 브라우저를 지원하는 최신 브라우저는이를 지원하는 서버에 크로스 원본 방식으로 시도 할 수 있습니다.

그러나 원격 서버가 자체적으로 지원하지 않는 한 수행 할 수있는 작업은 없습니다. A에서 내 앱을 서버에 연결하고 B에 연결하려는 경우 B만이이를 승인 할 수 있습니다. A가 내 앱이 일부 필터 또는 서블릿을 통해 B에 연결하도록 허용 한 경우 Gmail이나 Facebook 또는 Twitter에 전화를 걸고 다른 URL에서 설정 및 개인 데이터를 읽고 쓸 수있는 앱을 작성할 수 있습니다.

그래서 대신 언급 한 헤더와의 연결을 승인해야하는 것은 연락하는 교차 오리진 서버입니다. 그 대신 자신의 서버를 교차 원 서버의 프록시로 사용할 수 있습니다.

+0

내 서버를 프록시로 사용하고 CORS 헤더를 인증하려고 시도하면 내 브라우저가 요청을 다른 도메인 서버로 보내고 다른 도메인 서버가 요청한 데이터를 보내겠습니까? 당신이 말한대로, 나는 불가능하다고 생각합니다. 그렇다면 나는 왜 우리가 우리 자신의 서버를 프록시로 가져야하는지 알지 못한다. 그걸 조금 설명 할 수 있니? – somesh

+0

서버를 프록시로 사용하는 경우 CORS는 필요하지 않습니다. CORS가 작동하려면 JS 앱이 CORS를 허용하도록 원격 서버에 요청해야하며 원격 서버가이를 승인해야합니다. 서버가 해당 대화에 참여하지 않습니다 (그렇지 않을 수도 있습니다. 그렇지 않으면 다른 서버를 공격 할 수있는 좋은 방법이 될 수 있습니다 사이트). 이것들은 본질적으로 두 가지 옵션입니다 : * 원격 서버가 CORS를 처리 할 수 ​​있거나 * 자신의 서버를 프록시로 사용할 수 있습니다. –

+0

이제 알게되었습니다. 나는 그것이 JS 애플 리케이션이 아닌 다른 도메인 서버에 요청을 보낼 내 서버라는 가정하에있었습니다. 감사. – somesh

0

크로스 도메인 요청은 동일한 출처 보안 정책에 따라 웹 브라우저에서 금지되어 있습니다. 이러한 제한은 브라우저 기반 응용 프로그램에만 국한되므로 GWT 기반 클라이언트 측 응용 프로그램과 외부 서버간에 필터로 자체 서버 응용 프로그램을 사용할 수 있습니다.

관련 문제