问题描述
我使用pouchdb(v 6.2.0)在Chrome中创建了一个localDB。它是在IndexedDB中创建的。
var localdb = new PouchDB('localDB');
然后我在Ubuntu 18.04中创建了一个新的Sofadb(v3.1.0)。而且,我建立了一个没有用户权限的公共数据库。而且,ouchdb更改了设置以启用跨域资源共享(CORS)。它与本地连接中的curl操作一起很好地工作。
我使用pouchdb在chrome中创建新的远程数据库。但是远程数据库的复制失败,并显示“消息:“ getCheckpoint被拒绝”。
var remotedb = new PouchDB('http://admin:password@127.0.0.1:5984/remoteDB');
localdb.replicate.to(remotedb).on('complete',function () {
console.log('Done');
}).on('error',function (err) {
console.log('Error',err);
});
remotedb.info()失败,并显示“名称:“未知””消息。
try {
ret = await remotedb.info();
} catch (err) {
console.log('error',err);
}
我猜测chrome中的pouchdb的remoteDB有问题。 但是,我不确定确切原因是什么。
解决方法
我找到了上述问题的答案。这是一个简单的新手错误。答案是CORS和HTTPS问题。以下是一种解决方法。
Chrome的CORS通过关闭网络安全解决了该问题。
chrome --disable-web-security --user-data-dir
https://medium.com/@baphemot/understanding-cors-18ad6b478e2b
HTTPS是自签名证书,这是Chrome拒绝的问题。
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=48203146
寻找两个答案,数据库复制工作正常。