启用 WebHDFS 后,可以通过 curl 命令访问,但是通过 ajax 发出相同的请求时,会给出空响应。
例如,“NOTICE.txt”是添加到 HDFS 的文件,“new”是在 HDFS 根位置创建的新目录。
curl -i -X GET http://localhost:50070/webhdfs/v1/NOTICE.txt?op=GETFILESTATUS&user.name=hadoop
对于 ajax 我都尝试了:-
var url = 'http://localhost:50070/webhdfs/v1/NOTICE.txt?op=GETFILESTATUS&user.name=hadoop';
$.get(url, function(resp) {
console.log(resp);
});
(和)
$.ajax({
url:'http://localhost:50075/webhdfs/v1/NOTICE.txt?op=OPEN&user.name=hadoop',
dataType:'application/json',
success: function(resp) {
console.log(resp);
},
type:'GET'
});
curl 命令有效,而 ajax 收到状态码为 200 的空响应。当尝试通过 POSTMAN 等休息客户端访问相同的 url 时,它有效!那么,为什么ajax调用不起作用?通过javascript ajax调用webHDFS rest api时我们应该传递任何额外的参数吗?
卷曲的结果:
HTTP/1.1 200 OK 过期时间:星期四,1970 年 1 月 1 日 00:00:00 GMT 设置 Cookie:hadoop.auth="u=hadoop&p=hadoop&t=simple&e=1412285804171&s=EmNooXqRZRuQLsMoz3AXP83+7zg=";Path=/ Content-类型:application/json 传输编码:chunked 服务器:Jetty(6.1.26)
{"FileStatus":{"accessTime":1412246288609,"blockSize":67108864,"group":"supergroup","length":101,"modificationTime":1412246288609,"owner":"vivek","pathSuffix": "","permission":"644","replication":1,"type":"FILE"}}
但是ajax显示:
请求和响应的标头: