2017-01-05 1 views
0

새로운 Angular 2 프레임 워크를 사용하여 웹 페이지 containt를 가져오고 HTTP 객체를 이해하려고 시도합니다. 은 임 여기 자습서를 다음Angular 2와 Http object

http://www.joshmorony.com/using-http-to-fetch-remote-data-from-a-server-in-ionic-2/

그것의 이러한 종류의 데이터를 제공하지만 변수에 포함 된 HTML을 검색 할 서버에서 JSON 파일을 검색 할 완벽한. 나는 모든 HTML 파일을 가지고 있고 그것을 파싱하여 정보를 얻고 싶다.

나는이 같은 웹 사이트에서 예제의 URL을 수정할 때 :

EXCEPTION: Response with status: 0 for URL: null

내가 좋은 API를 사용하십니까 :

this.http.request('https://www.google.ca/').map(res => res.text()).subscribe(data => { 
    this.webPage = data.toString(); 
    console.log("data:" + data); 
}); 

나는이 오류가있어? 무엇이 잘못 되었나요?

덕분에, 팻

답변

1

이것은 CORS 문제입니다.
전체 오류는 다음과 같습니다

XMLHttpRequest cannot load https://www.google.ca/. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'https://run.plnkr.co' is therefore not allowed access. 
EXCEPTION: Response with status: 0 for URL: null 

때문에 당신은 'https://www.google.ca/'을 요청할 수 없습니다

: 앱에서 HTTP 요청을 할 때 1), 기원이 이미 호스트로 정의가 '로컬 호스트'또는 수 사이트의 호스트. 2) 'www.google.ca'는 다른 출처이며 '액세스 제어 허용 원점'이 설정되어 있지 않거나 사이트의 호스트가 '액세스 제어 허용 원점'목록에 없습니다.

'www.google.ca'의 html을 원한다면 프록시 서버가 필요합니다. 1 단계 : ng2 앱에서 프록시 서버에 요청을 보내서 요청합니다. 2) 프록시 서버 요청 'www.google.ca'을 사용하고 html을 ng2 앱으로 보냅니다.

프록시 서버가 'www.google.ca'를 요청하면 원산지는 'www.google.ca'로 정의됩니다. 따라서 프록시 서버는 html을 얻을 수 있습니다.

+0

그래서 내 응용 프로그램에서 내가 원하는대로 할 수 없다는 것을 이해하면. 프록시를 수행하려면 컴퓨터에 서버를 설치해야합니다. 알았어, 내가 생각했던 것보다 더 복잡해. 감사! – PatrickB

+0

Ionic에서 서버 작업을 수행 할 플러그인이 있는지 알고 있습니까? – PatrickB

+1

필자는 이온을 사용하지 않았으며 플러그인에 대해서는 잘 모릅니다. 하지만 'ionic cors'를 검색 한 후에 [이 기사] (http://blog.ionic.io/handling-cors-issues-inion/)를 통해 유용한 정보를 얻을 수 있습니까? 'Ionic CLI 프록시 서버 '. – Timathon

관련 문제