我正在学习nodejs,但我遇到了障碍。我试图设置一个服务静态文件的简单服务器。我的问题是除非我明确地在url中输入扩展名,否则我无法获得文件扩展名。 httpheader 'content-type'
以未定义的形式出现。
这是我的代码,非常简单:
var http = require("http"),
path = require("path"),
fs = require("fs");
var server = http.createServer(function(request, response){
console.log([path.extname(request.url), request.headers['content-type']]);
var fileName = path.basename(request.url) || "index.html",
filePath = __dirname + '/public/' + fileName;
console.log(filePath);
fs.readFile( filePath, function(err,data){
if (err) throw err
response.end(data);
});
})
server.listen(3000)
有什么想法吗?
仅供参考我不想潜入connect
或其他,我想知道在我放弃研究之前发生了什么事情并直接进入模块。
答案 0 :(得分:1)
因此,静态Web服务器通常不会做任何深刻的魔术。例如,nginx在此处有一个小的mime类型文件扩展名映射:http://trac.nginx.org/nginx/browser/nginx/conf/mime.types
可能还有一些后备逻辑默认为html。您还可以使用file实用程序使用的文件“幻数”数据库来查看文件数据的开头并根据该数据进行猜测。
但这里没有魔力。这基本上是
另请注意,浏览器通常具有相当强大的检查集,即使Content-Type标头与实际响应正文数据不匹配,也会正确解释文件。