2013-04-03 201 views
-1

我已经做了CouchDB的设计文件,它完美的作品在以下网址 http://localhost:5984/db/_design/app/index.html 现在的问题是我试图抓取网页内容,并从节点JS但只有HTML页面显示出来显示链接的CSS和JS文件不工作,当我试图缩小问题的范围时,我发现CSS和JS文件都假设有couchdb的登录凭据,并没有链接我甚至尝试添加auth头在响应参数,但仍没有运气的NodeJS couchapp没有链接CSS文件

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(); 
} 

可以在任何一个请指导我在哪里,我错了

回答

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 feed监听事件。