2010-07-16 5 views
2

서버 x.foo.com에서 호스팅되는 RESTful API를 만들려고합니다. 클라이언트 html 애플리케이션 (jquery에 내장)은 y.foo.com에서 호스팅됩니다.AJAX의 교차 출처 게시물에서 리디렉션 처리

http://www.w3.org/TR/cors/에 설명 된대로 Access-Control-Allow-Origin 헤더를 설정하여 도메인 간 문제를 처리하고 있습니다.

지금까지 매우 좋았습니다. 이제 호스트 y에서 호스트 x까지 AJAX 호출을 성공적으로 만들 수 있습니다.

그러나 POST 요청이있는 도청이 발생했습니다. 게시물 요청에 대한 일반적인 응답은 리디렉션입니다. 그러나 XMLHttpRequest 객체는 교차 도메인 리디렉션을 따르지 않으므로 실패한 호출이 발생합니다.

// Hosted on y.foo.com 
$.ajax({ 
    type: "POST", 
    url : http://x.foo.com/myapp/", 
    success: function(data) { 
     alert("success!"); 
    } 
}); 

// Return status: 302 
// (Which errors out in firebug) 

사람은 내가 Y에서 호스팅되는 클라이언트이 게시물에서 얻을 (서버 X에 자원) 리디렉션을 처리 할 수있는 기술을 알고?

답변

1

클라이언트가 AJAX 요청에 대한 특수 헤더를 보내고 AJAX 요청인지 여부에 따라 리디렉션을 수행하는 대신 응답을 변경할 수 있습니다.

+1

예 - 가능한 해결책 일 수 있습니다. Content-Type 헤더를 사용하여 원하는 형식을 지정할 수 있습니다. JSON이라면 POST에 대해 정규 200 응답을 보낼 수 있습니다. 그러나 대부분의 REST 참고 문헌에서 POST에 대한 리디렉션을 반환하는 것이 좋습니다. – shreddd