2012-11-20 38 views
0

我正嘗試使用Javascript連接到Splunk。我已經與Java連接,能夠做我想做的任何事情。當我嘗試使用Javascript連接時,我一直得到401.我對Java和Javascript都使用相同的憑據,所以我知道這裏沒有問題。我的代碼直接在示例之外。那就是:我無法使用Javascript連接到Splunk,但可以使用Java

exports.main = function(opts, done) { 
    // This is just for testing - ignore it 
    opts = opts || {}; 

    var username = opts.username || "username"; 
    var password = opts.password || "password"; 
    var scheme = opts.scheme  || "https"; 
    var host  = opts.host  || "domain.com"; 
    var port  = opts.port  || "8089"; 
    var version = opts.version  || "5"; 

    var service = new splunkjs.Service({ 
     username: "username", 
     password: "password", 
     scheme: "https", 
     host: "domain.com", 
     port: "8089", 
     version: "5" 
    }); 

    // First, we log in 
    service.login(function(err, success) { 
     // We check for both errors in the connection as well 
     // as if the login itself failed. 
     if (err || !success) { 
      console.log("Error in logging in"); 
      console.log(err); 
      done(err || "Login failed"); 
      return; 
     } 

     // Now that we're logged in, let's get a listing of all the saved searches. 
     service.savedSearches().fetch(function(err, searches) { 
      if (err) { 
       console.log("There was an error retrieving the list of saved searches:", err); 
       done(err); 
       return; 
      } 

      var searchList = searches.list(); 
      console.log("Saved searches:"); 
      for(var i = 0; i < searchList.length; i++) { 
       var search = searchList[i]; 
       console.log(" Search " + i + ": " + search.name); 
       console.log(" " + search.properties().search); 
      } 

      done(); 
     }); 
    }); 
}; 

if (module === require.main) { 
    exports.main({}, function() {}); 
} 

以下是錯誤消息:

There was an error retrieving the list of saved searches: { response: 
    { headers: 
     { connection: 'close', 
     'content-length': '100', 
     'content-type': 'text/xml; charset=utf-8', 
     date: 'Tue, 20 Nov 2012 22:27:11 GMT', 
     server: 'Splunkd' }, 
    statusCode: 401 }, 
    status: 401, 
    data: '<response>\n<messages>\n<msg type="WARN">call not properly authenticated</msg>\n</messages>\n</response>', 
    error: null } 

我節點在命令行中運行這個並獲得401錯誤。我還需要檢查什麼,看看我做錯了什麼。

回答

0

跨起源策略無疑CORS

0

跨來源的政策絕對是你想要看出來,你開始進入更高級的用例的SDK,但看你的示例代碼的東西,它看起來像你無意中在實例化service對象時,在變量名稱周圍放置雙引號。

我複製了您的代碼,將變量值替換爲我的服務器,第二次刪除了雙引號,並使用節點通過命令行對其進行了驗證...它工作得很好。

相關問題