2016-08-18 93 views
0

我試圖在XPages應用程序中使用谷歌圖表api。 我使用的是文檔給出的代碼示例:https://developers.google.com/chart/interactive/docs/php_example#exampleusingphphtml-fileJquery AJAX調用需要驗證

我必須通過調用LS代理來替換對php頁面的調用。

 var jsonData = $.ajax({ 
     url: "getData.php", 
     dataType: "json", 
     async: false 
     }).responseText; 

所以我的代碼去:

 var jsonData = $.ajax({ 
     url: "http://server/database/agent?openagent", 
     dataType: "json", 
     async: false 
     }).responseText; 

在我的本地Domino服務器,它工作正常。 在生產多米諾骨牌服務器上,我什麼也得不到。該圖表未繪製。在調試js客戶端後,似乎ajax調用需要認證,即使我之前必須登錄。

兩臺服務器都不允許匿名訪問。 在這兩種環境下的安全級別似乎相同

任何幫助將受到歡迎(或任何其他方式繼續,如果我錯了)。

謝謝

+0

你肯定匿名不允許訪問HTTP://服務器/數據庫/代理openagent本地Domino服務器上?檢查數據庫的ACL。此外,請嘗試直接在本地Domino服務器和生產服務器上訪問http:// server/database/agent?openagent。 –

+0

我剛剛在兩臺服務器上檢查了代理的調用。 在這兩個服務器上,我必須先登錄才能獲得代理結果 匿名條目在LCA上設置爲無訪問權 我也嘗試實施NetDeamon的解決方案,但沒有更多結果。 – Techn0fil

+1

如果您希望匿名能夠使用代理,那麼您應該給Anonymous在ACL中的正確訪問權 –

回答

0

最後,我試圖通過dojo而不是Jquery運行ajax請求。 我的代碼成爲這一個:

var jsonData = dojo.xhrGet({ 
    url: "http://server/database/agent?openagent", 
    handleAs:"json", 
    ... 
}) 

我沒有在安全級別或其他任何東西沒有變化。

我不明白爲什麼jQuery語法不如dojo語法。無論如何,它現在正在工作。

非常感謝大家的建議

0

如果能夠繪製圖表谷歌在本地服務器上,而不是在生產服務器,這意味着它是你的服務器的問題。

您可以添加authentication header in your jquery ajax call進行身份驗證Ajax請求

$.ajax({ 
    headers: { 
    "Authorization": "Bearer <TOKEN HERE>" 
    } 
}) 

send username and password in jquery ajax call,可以使身份驗證的請求。這裏是鏈接示例代碼

$.ajax({ 
    type: 'GET', 
    url: 'url', 
    dataType: 'json', 
    //whatever you need 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader('Authorization', make_base_auth(user, password)); 
    }, 
    success: function() {}); 
}); 

function make_base_auth(user, password) { 
    var tok = user + ':' + password; 
    var hash = btoa(tok); 
    return 'Basic ' + hash; 
} 
+0

嗨, 感謝您的回答如此之快。 不幸的是,ajax調用的頭部效果不佳。 我認爲哈希方法的結果不是多米諾服務器預期的憑據 我將繼續調查 – Techn0fil

+0

當您登錄到生產服務器(通過正常的登錄頁面)並執行正常的ajax調用時會發生什麼。它會拋出認證錯誤嗎?在ajax調用的標頭中傳遞令牌或用戶名/密碼將只在服務器認爲是有效的,否則不會。 – Netdeamon