-1

我已经制作了一个 couchdb 设计文档,它可以在以下 url 上完美运行 http://localhost:5984/db/_design/app/index.html 现在的问题是我正在尝试从节点 js 获取页面内容并显示它,但只显示 html 页面链接的 css 和 js 文件不起作用以及何时我试图缩小问题范围我发现css和js文件应该具有couchdb的登录凭据并且没有链接我什至尝试在响应参数中添加auth标头但仍然没有运气

var http = require('http');

var json;
var root = new Buffer("admin:pass").toString('base64');
http.createServer(function(req, res) {
res.setHeader('Authorization', root);
res.writeHead(200, { 'Content-Type':'text/html' });
couchPage();
res.end(json);  
}).listen(8080);

function couchPage() {
var options = {
    hostname: 'localhost',
    port: 5984,
    path: '/db/_design/app/index.html',
    auth: 'admin:pass',
    method: 'GET'
};

var req = http.request(options, function(res) {
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
        json = chunk;
    });
});

req.end();
}

谁能指导我我哪里错了

4

1 回答 1

0

我认为这与 couchdb 授权无关。问题是您没有在 nodejs 服务器上执行任何路由。也就是说,浏览器向 localhost:8080 发出请求,并接收到 /db/_design/app/index.html 的内容作为应答。现在,浏览器检测到样式表的链接,比如“style.css”。它向 localhost:8080/style.css 执行请求,但您的 nodejs 服务器只是忽略了请求的“style.css”部分。相反,客户端将再次收到 /db/_design/app/index.html 的内容!

如果要通过 nodejs 提供设计文档的附件,则必须先解析请求,然后从 couchdb 中检索相应的文档。但是,我认为您实际上并不想这样做。要么您想在 nodejs 后面以传统方式使用 couchdb(不能从客户端直接访问),然后您只需将其用作数据库,并将您的 html(或模板)文件存储在磁盘上。或者您想直接向客户端公开 couchdb 并让 nodejs 通过 couchdb _changes 提要监听事件。

于 2013-04-08T14:37:54.163 回答