允许javascript使用webhdfs restapi中的跨域访问?

nwo49xxi  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(415)

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

f45qwnt8

f45qwnt81#

如果我理解正确的话,那么您正在对一个不同于页面所在的域执行xmlhttprequest。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要执行跨域请求时,您需要执行一些不同的操作。关于如何实现这一点的教程是使用cors。
当您使用 Postman 时,他们不受此政策的限制。引用自交叉源xmlhttprequest:
在firefox浏览器中检查它,它可能工作,否则。。
我相信这可能是因为chrome不支持localhost通过访问控制allow origin——参见chrome问题
要让chrome在头文件中发送访问控制allow origin,只需将/etc/hosts文件中的localhost别名为其他域,如:
127.0.0.1 localhost yourdomain.com如果您使用yourdomain.com而不是localhost访问脚本,则调用应该会成功(或者)这就是服务器的问题。您必须在服务器端设置响应头。

相关问题