无法访问CouchDB实例:返回401 Unauthorized

时间:2014-12-02 10:33:50

标签: curl couchdb

我无法使用curl或任何第三方CouchDB客户端库访问我的couchdb实例。

返回:401未经授权!

我正在使用网址

  

https://instance.smileupps.com/

使用curl这是我输入的命令行:

  

curl https://instance.smileupps.com/

1 个答案:

答案 0 :(得分:9)

“401 Unauthorized”表示您的实例不在管理员中(您已经指定了至少一个管理员凭据对)。

在这种情况下您应该发送经过身份验证的请求,包括curl或任何第三方客户端库。

1)简单方法(不适用于带有特殊字符的凭据

您可以通过在主机名前添加用户名:密码来使用修改后的网址:密码,如:

  

https://my_username:my_password@instance.smileupps.com

这几乎总是很好..

2)简单但更安全(更可靠,更安全

如果1)不起作用,可能是您在用户名或密码中使用了特殊字符,curl或couchdb库在发送请求之前无法正确解析URL。

在这种情况下,您可以通过发送http基本授权标头来执行身份验证...这是一个标题,如:

  

授权:基本bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ =

其中“bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ =”是“my_username:my_password”的base64_encode。 您可以使用base64 online encoder service对自己的凭据进行编码。

因此 curl命令行将变为类似于:

> curl -v -H "Authorization: Basic bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=" -H
> "Content-type:application/json" -X GET
> https://instance.smileupps.com/mydatabasename

如果您使用的是第三方库,则应在其文档中找到添加自定义标头的方法,并添加以下内容:

  

授权:基本bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ =