我正在尝试阅读在线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。没有 '访问控制允许来源'标题出现在请求的上 资源。
任何人都可以帮助我吗?先谢谢你。
答案 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代理。