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 有効期限: Thu, 01-Jan-1970 00:00:00 GMT Set-Cookie: hadoop.auth="u=hadoop&p=hadoop&t=simple&e=1412285804171&s=EmNooXqRZRuQLsMoz3AXP83+7zg=";Path=/ Content-タイプ: application/json Transfer-Encoding: チャンク サーバー: Jetty(6.1.26)
{"FileStatus":{"accessTime":1412246288609,"blockSize":67108864,"group":"supergroup","length":101,"modificationTime":1412246288609,"owner":"vivek","pathSuffix": "","パーミッション":"644","レプリケーション":1,"タイプ":"ファイル"}}
しかし、ajax は次のことを示しています。
リクエストとレスポンスのヘッダー: