2016-08-18 91 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