如何在Angular中读取在线html文档到字符串

时间:2017-04-26 19:01:56

标签: html angular parsing cors

我正在尝试阅读在线html文档并使用Angular从中解析一些数据。问题是我一直收到关于cors的错误。我的阅读html文档的代码是:

  loadParsingData(htmlToParse:String){
     let retVal = this.http.get(htmlToParse.toString())
     .map(res => res.text())
     return retVal; }

当我尝试测试这段代码时,我希望得到来自给定网站的html文档(例如imdb最受欢迎的电影)作为参数,但我得到的只是:

  

XMLHttpRequest无法加载   http://www.imdb.com/chart/moviemeter?ref_=nv_mv_mpm_8。没有   '访问控制允许来源'标题出现在请求的上   资源。

任何人都可以帮助我吗?先谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以通过CORS代理发送请求。

您现在在代码中指定网址numberOfLine={1},只需将其替换为此网址:

http://www.imdb.com/chart/moviemeter?ref_=nv_mv_mpm_8

这将导致请求被发送到https://cors-anywhere.herokuapp.com/http://www.imdb.com/chart/moviemeter?ref_=nv_mv_mpm_8 ,这是一个代理,然后将请求发送到https://cors-anywhere.herokuapp.com。当该代理获得响应时,它将接受它并向其添加http://www.imdb.com/chart/moviemeter?ref_=nv_mv_mpm_8响应头,然后将其作为响应传递回您的请求前端代码。

带有Access-Control-Allow-Origin响应标头的响应是您的浏览器所看到的,因此浏览器显示的错误消息现在消失了,浏览器允许您的前端JavaScript代码访问响应。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS有关于CORS的一般细节,"No 'Access-Control-Allow-Origin' header is present on the requested resource"是一个答案,详细介绍了如何设置自己的CORS代理。