Http 401在AppHarbor上使用jquery查询RavenDB

时间:2012-05-14 18:12:32

标签: jquery ravendb appharbor

我在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?)如果对于某些查询我需要授权,但对于其他我不需要授权,如何处理呢?

2 个答案:

答案 0 :(得分:5)

我不会直接从jQuery连接到你的RavenDB实例。您需要传递您的API密钥,然后将其暴露在您的公共JavaScript文件中,供任何人连接。

在您的应用中创建一个API端点并点击该端点,让它运行查询并为您返回结果。

答案 1 :(得分:2)

您肯定需要发送身份验证,特别是API密钥described here。我不熟悉RavenDB用于身份验证的方案,但你可以查看source code

但是,在您的公共JavaScript文件中包含API密钥是一个坏主意。