我试图使用v2 api从docker hub获取官方图像列表。如果我尝试卷曲或使用邮递员,我得到了正确的响应,但当我尝试使用angularjs服务获取列表时,我收到以下错误
XMLHttpRequest无法加载https://hub.docker.com/v2/repositories/library/?page=8&page_size=15。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://run.plnkr.co'因此不允许访问。
有人可以为此建议解决方案。我怎样才能为此启用角色?
答案 0 :(得分:1)
可以在服务器端启用CORS,这不是你的情况。你能做的是:
1)使用代理,例如NGNIX,并确保所有请求发送到localhost /的任何内容都被重定向到hub.docker.com。这样你就可以欺骗"跨源块
2)如果你需要一个临时和脏的解决方案,你可以更简单地安装chrome / safari插件来绕过CORS安全检查
答案 1 :(得分:0)
只有一种绕过CORS的方法是通过像http://crossorigin.me这样的cors代理发送请求
这是一个开源项目,你可以通过从这里下载完整的源代码来构建自己的代理服务器:https://github.com/technoboy10/crossorigin.me
答案 2 :(得分:0)
问题背后的原因:
根据我的理解,您正在对不同的域进行AJAX
调用,而不是您的网页。因此,出于安全原因,浏览器会阻止它,因为它通常允许同一来源的请求。有关如何实现该请求的教程是using CORS。
当您使用curl
或postman
时,他们不受此政策的限制。引自Cross-Origin XMLHttpRequest:
常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到相同原始策略的限制。扩展不是那么有限。扩展可以与其来源之外的远程服务器通信,只要它首先请求跨源权限。