首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用angular 7调用外部API

使用angular 7调用外部API
EN

Stack Overflow用户
提问于 2018-11-30 15:26:10
回答 5查看 7.8K关注 0票数 1

我正在使用angular 7,我是angular的新手,现在是我的学习阶段。我要开发一个演示应用程序,稍后将在PWA(渐进式web应用程序)中得到增强。基本上,我将建立一个媒体应用程序,将播放不同类别的视频,如新闻,体育等。我从JSON feed URL获取类别数据,这是在服务器端的某个地方管理的。每个类别都有不同的CDN URL,我们可以在其中获取视频URL。

现在,我的问题是,当我试图从JSON feed URL获取数据时,它将返回CORS策略错误,并且我无法使用angular获取数据。

我已经在谷歌上搜索过了,但找不到解决方案。大多数文章建议在服务器端代码中允许标题'Access-Control- allow -Origin‘。但是我从不同的CDN获取数据,并且我无法访问这些CDN。

angular如何从外部提要URL访问数据?如何在Angular JS中启用交叉请求?如果我们需要托管一个中间件服务器,所有的请求都将通过这个服务器,在那里我们可以允许CORS。

EN

回答 5

Stack Overflow用户

发布于 2018-11-30 16:01:47

从MDN web文档:

跨域资源共享(CORS)是一种机制,它使用额外的HTTP头告诉浏览器允许在一个源(域)上运行的web应用程序具有从另一个源(域)的服务器访问所选资源的权限。当web应用程序请求的资源的来源(域、协议和端口)与其自身的来源不同时,它会发出跨域HTTP请求。

简而言之,这意味着浏览器正在阻止您的angular应用程序的跨域请求。有一些方法可以规避浏览器的同源策略(即反向代理),但对于您的情况,最好的方法是使用您自己的后端服务器(即中间件)查询这些CDN,然后使用您的angular应用程序从您自己的后端服务器检索查询的数据。

票数 1
EN

Stack Overflow用户

发布于 2018-11-30 16:08:39

如果你连接的API支持JSONP,你可以使用JSONP。JSONP是一种绕过Access-Control-Allow-Origin问题的方法,但它必须得到API的支持。

它的工作方式是服务器返回一个封装在名为parseResponse(…)的函数中的响应。然后通过创建标记与API进行通信,其中src指向API调用。当脚本下载时,它执行函数,允许您通过实现所述函数来获取数据。

除此之外,你不能。跨来源预防的全部要点是阻止你做这件事。Angular或任何其他javascript框架都不能帮助您克服这一限制。

您建议为这些请求使用服务器是一种潜在的解决方法,但如果这只是一个概念证明应用程序,那么您可以简单地停用浏览器的跨域策略。

下面是一个chrome扩展,它就是这样做的:

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

票数 0
EN

Stack Overflow用户

发布于 2018-11-30 16:11:25

在angular中没有破解CORS策略的方法。您必须允许您的ip从后端(服务器)。如果你想在不改变服务器的情况下获取媒体,你必须找到一个公共的apis来获取媒体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53553042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档