我试图弄清楚如何在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
(或浏览器)有什么区别?答案 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);
}
});
});