【问题标题】:docker hub api giving No 'Access-Control-Allow-Origin' errordocker hub api 给出 No 'Access-Control-Allow-Origin' 错误
【发布时间】:2016-08-29 09:38:32
【问题描述】:

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

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

有人可以为此提出解决方案吗?如何为此启用 cors?

【问题讨论】:

    标签: angularjs docker dockerhub docker-api


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        问题背后的原因:

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

        当您使用curlpostman 时,它们不受此政策的限制。引用自Cross-Origin XMLHttpRequest

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

        【讨论】:

          猜你喜欢
          • 2017-12-29
          • 2018-11-10
          • 1970-01-01
          • 2017-06-15
          • 2019-02-07
          • 2019-03-18
          • 2016-12-09
          • 1970-01-01
          • 2018-12-12
          相关资源
          最近更新 更多