【问题标题】:Enabling Cross domain Access in WEBHDFS REST Api to be used by JavaScript?在 WEBHDFS REST Api 中启用跨域访问以供 JavaScript 使用?
【发布时间】:2016-09-01 07:31:19
【问题描述】:

我正在尝试从 Webhdfs rest api 获取 liststatus,但出现以下错误。

XMLHttpRequest cannot load http://<IP>:50070/webhdfs/v1/?op=LISTSTATUS. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.

当我尝试通过 curl 访问时,它加载成功。但是当我尝试使用 AngularJS $http.get 获取它时它失败了。

有没有办法在 Hadoop core-site.xml 或其他地方启用跨域访问?

【问题讨论】:

    标签: javascript angularjs rest hadoop webhdfs


    【解决方案1】:

    如果我理解正确,您正在向与您的页面所在的域不同的域执行 XMLHttpRequest。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要进行跨域请求时,您需要做一些不同的事情。有关如何实现这一点的教程是使用 CORS。

    当您使用邮递员时,他们不受此政策的限制。引用自跨域 XMLHttpRequest:

    在 Firefox 浏览器中检查它可能会工作,否则 ..

    我认为这可能是 Chrome 不支持 localhost 来通过 Access-Control-Allow-Origin -- 请参阅 Chrome 问题

    要让 Chrome 在标头中发送 Access-Control-Allow-Origin,只需将 /etc/hosts 文件中的 localhost 别名为其他域,例如:

    127.0.0.1 本地主机 yourdomain.com 然后,如果您使用 yourdomain.com 而不是 localhost 访问脚本,则调用应该会成功。 (要么) 那是服务器的问题。您必须在服务器端设置响应标头。

    【讨论】:

      猜你喜欢
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多