angular - 使用 Angular 7 调用外部 API
问题描述
我正在使用 Angular 7。我是 Angular 的新手,这是我的学习阶段。我将开发一个演示应用程序,稍后将在 PWA(渐进式 Web 应用程序)中进行增强。基本上,我将构建一个媒体应用程序,它将播放不同类别的视频,如新闻、体育等。我从在服务器端某处管理的 JSON 提要 URL 获取类别数据。每个类别都有不同的 CDN URL,我们可以在其中获取视频 URL。
现在,我的问题是,当我尝试从 JSON 提要 URL 获取数据时,它将返回 CORS 策略错误,并且我无法使用 angular 获取数据。
我在谷歌搜索但无法找到解决方案。大多数文章建议在服务器端代码中允许标头“Access-Control-Allow-Origin”。但是我从不同的 CDN 获取数据,我无法访问这些 CDN。
如何从外部提要 URL 角度访问数据?如何在 Angular JS 中启用交叉请求?我们是否需要托管一个中间件服务器,并且所有请求都将通过我们可以允许 CORS 的该服务器传递。
解决方案
来自 MDN 网络文档:
跨域资源共享 (CORS) 是一种机制,它使用额外的 HTTP 标头告诉浏览器让在一个源(域)运行的 Web 应用程序有权访问来自不同源的服务器的选定资源。当 Web 应用程序请求具有与其自身来源不同的来源(域、协议和端口)的资源时,它会发出跨域 HTTP 请求。
简而言之,这意味着浏览器正在阻止您的 Angular 应用程序的跨域请求。有一些方法可以规避浏览器的同源策略(即反向代理),但对于您的情况,最好的方法是使用您自己的后端服务器(即中间件)查询这些 CDN,然后从您的使用您的 Angular 应用程序拥有自己的后端服务器。
推荐阅读
- asp.net - 当我在 WCF 服务中运行简单方法时,“/”应用程序中的服务器错误
- vue.js - 没有 Webpack 的 Vuejs 的简约构建设置
- javascript - CSS/JS:使用 vanilla JS 向下和向上滑动过渡
- php - 覆盖 woocommerce 主题没有效果
- sql - 表中的日期列
- git - 我是否必须将 gh-pages 合并到 master 才能发布带有 dist 文件夹的存储库?
- database - NoSQL (DynamoDB) 数据库设计
- gpflow - 使用 VFE 和 SVGP 模型进行预测的顺序调用
- reactjs - 是否可以使用在导入的 .js 文件中定义的组件?
- linux - Jenkins错误sh:0:无法打开标签:/ sh:0:无法打开脚本:尝试执行SOAPUI命令行时