javascript - RXJS Observable MergeMap 链
问题描述
我有这个简单的 api 请求,它返回一个可观察到的对象,该对象中有一堆项目,每个项目都有一个链接。所以我想直接在我当前的异步流中获取链接后面的数据,但我得到一个 CORS 错误说:
Access to XMLHttpRequest at 'https://orf.at/stories/3146336/' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
这甚至可以用我目前的fetchOrfFeed()
功能吗?还是我误解了一些基本概念?
public fetchOrfFeed(): Observable<any> {
return this.http.get<OrfFeed>('https://api.rss2json.com/v1/api.json?rss_url=https://rss.orf.at/news.xml')
.pipe(mergeMap(feed => feed.items))
.pipe(mergeMap(item => this.http.get<string>(item.link)));
}
解决方案
您可以配置您的代理,或者如上所述,配置您的 CORS 请求。
如果您选择代理选项(我认为它更好):
查看 Angular 项目中的proxy.config.json文件并将该 URL 添加到其中。
例如:
{
"/api/fetch-or-feed": {
"target": "https://api.rss2json.com/v1/api.json?rss_url=https://rss.orf.at/news.xml",
"secure": false,
"logLevel": "debug"
}
}
然后在您的服务调用中使用它
return this.http.get<OrfFeed>('/api/fetch-or-feed')...
推荐阅读
- php - PhpWord - TemplateProcessor:错误复制模板
- python-2.7 - 无法在所需位置显示面板
- docker - 使用 pycharm 运行时 Docker 冻结
- python - 有没有办法从一个大文本文件中获取一个 json 数据子集?
- python - 在 Tensorflow 中跨多级范围共享变量
- python - 使用 Pub/Sub 和 Dataflow 从单个 JSON 创建多行并将其插入到 BigQuery
- json - 用于检查 IP 是否在欧盟的 URL
- r - 如何制作时间变异函数
- javascript - 功能变量动态设置
- docker - 使用 docker-compose 将文件放入 HDFS