我是Angular 2框架中的新手,我尝试了解Http对象。 我遵循这里的教程:
http://www.joshmorony.com/using-http-to-fetch-remote-data-from-a-server-in-ionic-2/
它非常适合从提供此类数据的服务器检索JSON文件,但我想将HTML包含到变量中。我想拥有所有的html文件并解析它以获得一些信息。
当我通过这样的网站修改示例中的URL时:
this.http.request('https://www.google.ca/' ).map(res => res.text()).subscribe(data => {
this.webPage = data.toString();
console.log("data:" + data );
});
我收到了这个错误:
EXCEPTION:响应状态:URL为0:null
我使用好的API吗? 我做错了什么?
谢谢, 专利
答案 0 :(得分: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/”,因为:1)当您在应用中发出http请求时,原点已被定义为您的主机,可能是“localhost”或您网站的主机。 2)'www.google.ca'是另一个来源,它没有设置'Access-Control-Allow-Origin',或者您网站的主机不在他们的'Access-Control-Allow-Origin'列表中。
如果你想要'www.google.ca'的html,你需要一个代理服务器,步骤是:1)在你的ng2应用程序中,你向代理服务器发送请求并要求它做... 2)您代理服务器请求'www.google.ca'并将html发送到您的ng2应用程序。
当代理服务器请求“www.google.ca”时,原点定义为“www.google.ca”。所以代理服务器可以获取html。