2014-11-26 5 views
9

저는 AngularJS 응용 프로그램을 가지고 있습니다. 서버에서 $ http get을 사용하여 XML 데이터를 가져 오려고합니다. http://example.com/a/b/c/d/getDetails?fname=abc&lname=def (브라우저에 링크를 입력하여 수동으로 액세스하면 XML 파일의 트리 구조가 표시됨)라고 말합니다.

응용 프로그램을 실행할 때 해당 링크의 데이터를 가져 오지 않습니다. 대신 상태 0의 오류가 표시됩니다.

//url = http://example.com/a/b/c/d/getDetails?fname=abc&lname=def 
$http.get(url).success(function (data){ 
       alert("Success"); 
       deferred.resolve(data); 
      }).error(function (data, status){ 
       console.log("Error status : " + status); 
      }); 

잘 모르겠어요 왜 http.get이 실패하고 오차 함수 반환 상태 0

로 이동 $하지만이 JSON 개체가 로컬 서버에 URL을 전달하면, 그것을 공장.

다른 도메인 (CORS 문제)이나 다른 것에서 XML 파일에 액세스하려고했기 때문에 문제가 있습니까?

제발 도와주세요!

+0

예, 콘솔이 보이면 오류가 발생 했어야합니다 (Cross Origin ...). –

+1

아니요. 나는 내 콘솔에서 그런 것을 얻지 못했습니다. – kumareloaded

+0

콘솔에 오류를 기록하고 DOM에 반환하지 않으려면 어떻게해야합니까? – mdarmanin

답변

16

의 구현에 관한 기사를 찾을 수에 당신은 더 많은 정보를 찾을 수 있습니다.

Angular가 응답을 올바르게 소비 할 수 있도록 REST 요청에 응답하는 서버에 CORS에서 지정한 헤더가 있어야합니다. 본질적으로 이는 응답에 Access-Control-Allow-Origin 헤더를 포함하고 허용되는 요청을 보낸 서버를 지정하는 것을 의미합니다. (ref)

Angular에는 앵글 템플릿 소싱에 사용 된 URL이 안전하도록 허용 된 화이트리스트와 블랙리스트를 가져 오거나 설정할 수있는 지시문이 있습니다.

+0

XML 데이터에 액세스하는 데 사용하는 링크를 허용하려면 충분합니까? – kumareloaded

+0

xmlhttprequests를 사용하는 경우 JSONpadding이 필요합니다. 그러나 서버는 "CORS (Cross-Origin Resource Sharing)"를 지원해야합니다. 다른 도메인에서 데이터를 수신하는 것은 간단합니다. – KByK

2

예 요청 데이터 또는 응답 데이터를 변경하려는 경우 $ http의 기본 content-type은 "application/json"이므로 tranformRequest 및 tranformResponse를 사용하여 변경할 수 있습니다. 이

here 또한 당신이 HTTP access control (CORS) 문제가 tranformRequest change post data from json to form post in angularjs

+0

감사합니다. 그래서 transformRequest를 사용한 후 내 응용 프로그램을 위해 xml2json을 사용하여 xml 내용을 JSON으로 변환하고 사용해야합니까? (http://rabidgadfly.com/2013/02/angular-and-xml-no-problem/) 아니면 다른 해결책이 있습니까? – kumareloaded

+0

링크가 스팸 사이트로 리디렉션됩니다 – tylerlindell

관련 문제