Curl CouchDB的基本身份验证

Curl CouchDB的基本身份验证,curl,couchdb,Curl,Couchdb,我正在试图找出如何使用基本身份验证(即http://test:test@CouchDB 1.3.1中的localhost:5984/mydb) 在蒲团里: 我创建了一个数据库mydb 我为它设置了两个用户。在安全选项卡中:一个成员具有读取权限[“test”]和一个管理员[“admin”] 然后我只是测试连接 使用curl: curl GET http://localhost:5984/mydb 返回401未经授权,这很好 curl GET http://test:test@localhos

我正在试图找出如何使用基本身份验证(即
http://test:test@CouchDB 1.3.1中的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:

curl GET http://localhost:5984/mydb
两者都返回url上的
401
http://test:test@localhost:5984/mydb

所以,问题:

curl GET http://localhost:5984/mydb
  • 使用
    curl-GET
    或usign
    $.ajax-GET
    (或浏览器)有什么区别
  • 我是否缺少CouchDB或其他允许执行这种身份验证的配置
    • 它被称为。基本上,浏览器可以进行的ajax调用有一个限制。这是一种安全功能,不允许浏览器随意从任何地方加载资源

      似乎您希望能够做到这一点,毕竟单击会加载任意资源。但是,如果任何旧的javascript程序可以加载任何其他资源,那么有很多方法可以劫持它来注入代码或窃取信息

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


      此外,您可以通过查询localhost:5984/\u会话来启动会话,此时将使用安全令牌cookie发送以下所有查询。是一些常用函数的一个很好的基本资源

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

       $(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);
                  }
              });
          });
      

      资料来源:

      从未想过401计划可能是cors的问题。通过反向代理进行测试,瞧。。谢谢