我在AppHarbor中使用RavenDB使用jQuery查询索引。我得到了一个未经授权的Http 401。如果我使用我的本地连接字符串,一切正常,我想我需要设置RavenDB来接受我指向Appharbor数据库的请求。 我用于查询的jquery看起来像这样(queryUrl有效):
function search(queryUrl) {
$.ajax({
url: queryUrl,
dataType: 'jsonp',
jsonp: 'jsonp',
success: function (data) {
$("#companiesHolder").empty();
$.each(data.Results, function() {
$("#companiesHolder").append("<li><hgroup class='title'><h2>" + this.Name + "</h2><h5>" + this.Email + "</h5></hgroup></li>");
});
},
error: function (error, stat, message) {
alert(stat + ":" + message);
}
});
我在浏览器中遇到的错误是:
parsererror:未调用jQuery162024808977324209974_1337018748684
如何在AppHarbor中配置RavenDB以允许我的请求?或者我应该使用jQuery发送一些请求? (也许我应该发送我在documentStore中设置的ApiKey?)如果对于某些查询我需要授权,但对于其他我不需要授权,如何处理呢?
答案 0 :(得分:5)
我不会直接从jQuery连接到你的RavenDB实例。您需要传递您的API密钥,然后将其暴露在您的公共JavaScript文件中,供任何人连接。
在您的应用中创建一个API端点并点击该端点,让它运行查询并为您返回结果。
答案 1 :(得分:2)
您肯定需要发送身份验证,特别是API密钥described here。我不熟悉RavenDB用于身份验证的方案,但你可以查看source code。
但是,在您的公共JavaScript文件中包含API密钥是一个坏主意。