使用CouchDB进行基本身份验证

时间:2013-09-10 19:00:02

标签: curl couchdb

我试图弄清楚如何在CouchDB 1.3.1中使用基本身份验证(即http://test:test@localhost:5984/mydb)。

在被褥中:

  • 我创建了一个数据库mydb
  • 我为它设置了两个用户。在安全标签中:一位具有读取权限["test"]和一位管理员["admin"]
  • 的成员

然后我只测试连接。

使用curl:

curl GET http://localhost:5984/mydb

未经授权返回401,这很好。

curl GET http://test:test@localhost:5984/mydb

返回200,因此一切都按预期使用curl。

使用浏览器或$ .ajax:

两者都在网址401上返回http://test:test@localhost:5984/mydb

所以,问题:

  • 使用curl GET或使用$.ajax GET(或浏览器)有什么区别?
  • 我是否缺少CouchDB或其他允许执行此类身份验证的配置?

2 个答案:

答案 0 :(得分:5)

它被称为Cross Origin Resource Sharing。基本上,浏览器可以对ajax调用进行限制。这是一项安全功能,不允许浏览器随意从任何地方加载资源。

在点击加载任意资源后,您似乎希望能够这样做。但是,如果任何旧的javascript程序可以加载任何其他资源,有很多方法可以被劫持以注入代码或窃取信息。

CURL通过不受CORS的限制来解决这个问题。它只是提出你想要的任何旧请求。

此外,您可以通过查询localhost:5984 / _session来启动会话,此时您将使用安全令牌cookie发送所有以下查询。 jQuery.couch是一些常用功能的基本资源。

答案 1 :(得分:0)

您忘记了将身份验证信息放在标题中。试试吧!

 $(document).ready(function () {
     $.ajax({
      url: 'http://127.0.0.1:5984/mydb', //Your api url
      type: 'GET', //type is any HTTP method
      xhrFields: {
        withCredentials: true
      },
       headers: {
                'Authorization': 'Basic ' + btoa('MyUser:MyPassWord')
            },
            success: function (response) {
                var resposta = response            
            },
            error: function (err) {
                var t = err.responseText;
                console.log("Erro de requisição: " + err.responseText);
            }
        });
    });

来源:https://zinoui.com/blog/ajax-basic-authentication