docker中心API给不访问控制允许来源错误

我试图从docker集线器使用v2 API获取官方图像列表。 如果我尝试curl或使用邮递员,我得到正确的响应,但是当我尝试使用angularjs服务获取列表,我得到以下错误

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

有人可以build议这个解决scheme。 我该如何启用cors?

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

1)使用代理,例如NGNIX,并确保所有对localhost / /的请求都被redirect到hub.docker.com。 这样你可以“欺骗”交叉源块

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

只有一种绕过CORS的方法是通过像http://crossorigin.me这样的Cors代理发送请求

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

问题背后的原因:

根据我的理解,你正在做一个不同于你的页面的域名的AJAX调用。 所以,出于安全考虑,浏览器会阻止它,因为它通常允许在同一个源的请求。关于如何实现这一点的教程是使用CORS 。

当您使用curlpostman他们不受此政策的限制。 引用来自跨源XMLHttpRequest :

常规的网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但是它们受限于相同的源策略。 扩展不限于此。 一个扩展可以与远程服务器通信,只要它首先请求跨源许可。