我无法通过代理(express/node.js服务器和PouchDB -http- proxy )让http复制工作。想要实现这一点,添加访问控制。
复制在没有代理的情况下工作:
PouchDB -->云(https://account:password@account.cloudant.com/testdb
)
复制失败,并显示代理:
云-->快速代理(http://localhost:3000/proxy
) --> PouchDB (https://account:password@account.cloudant.com/testdb
)
error: CustomPouchError
代理
const httpProxy = require("http-proxy");
const proxy = httpProxy.createProxyServer();
router.all("/proxy", (req, res, next) => {
proxy.on("proxyReq", (proxyReq, req, res, options) => {
proxyReq.setHeader("Authorization", "Basic: Base64(account:password)")
})
proxy.web(req, res, {
target: "https://account:password@account.cloudant.com/testdb",
secure: false,
changeOrigin: true
});
});
PouchDB
// succeeds without proxy
localDB.replicate
.to("https://account:password@account.cloudant.com/testdb")
.on('error', err => {
console.log('error', err);
});
// fails with proxy
localDB.replicate
.to("http://localhost:3000/proxy")
.on('error', err => {
console.log('error', err);
});
真的卡在这上面了!非常感谢任何关于哪里出了问题或者如何通过代理实现pouchdb cloudant复制的想法。谢谢!
发布于 2019-07-22 14:11:11
您的代码正在尝试使用代理本身进行复制。代理不是目标服务器,这就是为什么会出现错误的原因。如果Express中的代理设置是正确的,那么您应该能够与目标服务器进行复制,并且代理设置应该能够控制连接,而不需要在应用程序中编写任何额外的代码。
https://stackoverflow.com/questions/57044997
复制相似问题