0

我正在尝试使用 v2 api 从 docker hub 获取官方图像列表。如果我尝试使用 curl 或使用邮递员,我会正确获得响应,但是当我尝试使用 angularjs 服务获取列表时,会出现以下错误

XMLHttpRequest 无法加载https://hub.docker.com/v2/repositories/library/?page=8&page_size=15。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://run.plnkr.co ”。

有人可以为此提出解决方案。我怎样才能为此启用cors?

4

3 回答 3

1

可以在服务器端启用 CORS,这不是您的情况。你可以做的是:

1) 使用代理,例如 NGNIX,并确保所有发往 localhost/whatever 的请求都被重定向到 hub.docker.com。这样你就可以“欺骗”跨域块

2)如果你需要一个临时和肮脏的解决方案,你可以更简单地安装 chrome/safari 插件来绕过 CORS 安全检查

于 2016-08-29T09:48:25.367 回答
0

只有一种绕过 CORS 的方法是通过http://crossorigin.me之类的 cors 代理发送请求

这是一个开源项目,您可以通过从这里下载完整的源代码来构建自己的代理服务器:https ://github.com/technoboy10/crossorigin.me

于 2016-08-29T09:51:10.177 回答
0

问题背后的原因:

据我了解,您正在AJAX调用与您的页面所在的域不同的域。因此,浏览器出于安全原因阻止它,因为它通常允许来自同一来源的请求。有关如何实现这一点的教程是使用 CORS

当您使用curlpostman不受本政策限制时。引用自跨域 XMLHttpRequest

常规网页可以使用 XMLHttpRequest 对象从远程服务器发送和接收数据,但它们受到同源策略的限制。扩展并没有那么有限。扩展程序可以与其源之外的远程服务器通信,只要它首先请求跨域权限。

于 2016-08-29T12:31:20.230 回答