在 WEBHDFS REST Api 中启用跨域访问以供 JavaScript 使用?

Enabling Cross domain Access in WEBHDFS REST Api to be used by JavaScript?

我正在尝试从 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 或其他地方启用跨域访问?

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

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

在 Firefox 浏览器中检查它可能有效,否则..

我相信这可能是因为 Chrome 不支持本地主机通过 Access-Control-Allow-Origin -- 请参阅 Chrome 问题

要让 Chrome 在 header 中发送 Access-Control-Allow-Origin,只需将 /etc/hosts 文件中的本地主机别名为其他域,例如:

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